正在加载

搜索用例的 Ingest Pipeline

Elastic Stack

您可以通过 Elasticsearch API 或 Kibana UI 管理 Ingest Pipeline。

搜索下的 Content UI 包含一组用于创建和管理针对搜索用例(非时间序列数据)优化的 Index 的工具。 您也可以在此 UI 中管理您的 Ingest Pipeline。

要使用这些 UI 工具处理 Ingest Pipeline,您将使用搜索优化 Elasticsearch Index 上的 Pipelines 选项卡。

在 Kibana UI 中查找此选项卡

  1. 转到 Search > Content > Elasticsearch indices
  2. 选择要使用的 Index。 例如,search-my-index
  3. 在 Index 的概览页面上,打开 Pipelines 选项卡。
  4. 从这里,您可以按照说明创建自定义 Pipeline 并设置 ML 推理 Pipeline。

此选项卡在此屏幕截图中突出显示

ingest pipeline ent search ui

通过提供对文档的自定义和后处理层,这些工具特别有用。 例如

  • 提供从二进制数据类型一致的文本提取
  • 确保一致的格式
  • 提供一致的清理步骤(删除像电话号码或 SSN 这样的 PII)

从头开始设置和管理生产就绪的 Pipeline 可能需要大量工作。 必须考虑错误处理、条件执行、排序、版本控制和模块化等因素。

为此,当您为搜索用例创建 Index 时(包括 Web 爬虫、搜索连接器和 API Index),每个 Index 已经设置了一个 Pipeline,其中包含多个处理器,可以优化您的搜索内容。

此 Pipeline 称为 search-default-ingestion。 虽然它是一个“托管”Pipeline(意味着不应被篡改),但您可以通过 Kibana UI 或 Elasticsearch API 查看其详细信息。 您还可以阅读以下关于其内容的更多信息

您可以控制是否运行其中一些处理器。 虽然默认情况下启用所有功能,但可以选择退出。 对于Elastic 爬虫连接器,您可以按 Index 选择退出(或重新加入),并且您的选择将被保存。 对于 API Index,您可以通过在文档中包含特定字段来选择退出(或重新加入)。 请参阅下面的详细信息

在部署级别,您可以更改所有新 Index 的默认设置。 这不会影响现有 Index。

每个 Index 还提供轻松创建具有可自定义处理的 Index 特定 Ingest Pipeline 的能力。 如果您需要额外的灵活性,可以通过转到您的 Pipeline 设置并选择“复制和自定义”来创建自定义 Pipeline。 这将使用 3 个新生成的 Pipeline 替换 Index 对 search-default-ingestion 的使用

  1. <index-name>
  2. <index-name>@custom
  3. <index-name>@ml-inference

search-default-ingestion 类似,第一个是“托管”的,但其他两个可以并且应该修改以满足您的需求。 您可以使用平台工具(Kibana UI、Elasticsearch API)查看这些 Pipeline,也可以阅读以下关于其内容的更多信息

除了 Pipeline 本身之外,您还有一些配置选项可以控制 Pipeline 的各个功能。

  • 提取二进制内容 - 这控制是否应处理二进制文档并提取任何文本内容。
  • 减少空格 - 这控制是否应删除连续的、前导的和尾随的空格。 这有助于在某些搜索体验中显示更多内容。
  • 运行 ML 推理 - 仅在 Index 特定 Pipeline 上可用。 这控制是否将运行可选的 <index-name>@ml-inference Pipeline。 默认启用。

对于 Elastic Web 爬虫和连接器,您可以按 Index 选择加入或退出。 这些设置存储在 Elasticsearch 的 .elastic-connectors Index 中,存储在与特定 Index 对应的文档中。 这些设置可以直接在此处更改,也可以通过 Kibana UI 在 Search > Content > Indices > <your index> > Pipelines > Settings 中更改。

您还可以更改部署范围的默认值。 这些设置存储在 .elastic-connectors 的 Elasticsearch 映射的 _meta 部分中。 这些设置可以直接在此处更改,也可以从 Kibana UI 中的 Search > Content > Settings 选项卡中更改。 更改部署范围的默认值不会影响任何现有 Index,只会影响任何新创建的 Index 默认值。 这些默认值仍然可以被 Index 特定设置覆盖。

这些设置不会为“使用 API”的 Index 持久保存。 相反,更改这些设置将实时更改显示的示例 cURL 请求。 请注意,cURL 请求中的示例文档包含三个以下划线为前缀的字段

{
  ...
  "_extract_binary_content": true,
  "_reduce_whitespace": true,
  "_run_ml_inference": true
}

省略其中一个特殊字段等同于使用值 false 指定它。

注意

您还必须在 Index 请求中指定 Pipeline。 这也显示在示例 cURL 请求中。

警告

如果未指定 Pipeline,以下划线为前缀的字段实际上将被 Index,并且不会影响任何处理行为。

您可以使用Elasticsearch Ingest Pipelines API或通过 Kibana 的Stack Management > Ingest Pipelines UI 访问此 Pipeline。

警告

此 Pipeline 是“托管”Pipeline。 这意味着它不适合编辑。 手动编辑/更新此 Pipeline 可能会导致意外行为,或将来难以升级。 如果您想进行自定义,我们建议您使用 Index 特定 Pipeline(见下文),特别是<index-name>@custom Pipeline

  1. attachment - 这使用Attachment处理器将存储在文档的 _attachment 字段中的任何二进制数据转换为纯文本和元数据的嵌套对象。
  2. set_body - 这使用Set处理器复制从上一步提取的任何纯文本,并将其保存在文档的 body 字段中。
  3. remove_replacement_chars - 这使用Gsub处理器从 body 字段中删除像“”这样的字符。
  4. remove_extra_whitespace - 这使用Gsub处理器将连续的空格字符替换为 body 字段中的单个空格。 虽然对于每个用例来说并不完美(请参阅下面的如何禁用),但这可以确保搜索体验为您的搜索结果显示更多内容和突出显示,以及更少的空白空间。
  5. trim - 这使用Trim处理器从 body 字段中删除任何剩余的前导或尾随空格。
  6. remove_meta_fields - Pipeline 的最后一步使用Remove处理器删除可能已在 Pipeline 中的其他地方使用的特殊字段,无论是作为临时存储还是作为控制流参数。

search-default-ingestion Pipeline 并不总是运行所有处理器。 它利用 Ingest Pipeline 的一项功能来根据每个单独文档的内容有条件地运行处理器

  • _extract_binary_content - 如果此字段存在于源文档中,且值为 true,则管道将尝试运行 attachmentset_bodyremove_replacement_chars 处理器。请注意,文档还需要包含填充了 base64 编码的二进制数据的 _attachment 字段,attachment 处理器才能有任何输出。如果源文档中缺少 _extract_binary_content 字段或值为 false,则这些处理器将被跳过。
  • _reduce_whitespace - 如果此字段存在于源文档中,且值为 true,则管道将尝试运行 remove_extra_whitespacetrim 处理器。这些处理器仅适用于 body 字段。如果源文档中缺少 _reduce_whitespace 字段或值为 false,则这些处理器将被跳过。

爬虫、原生连接器和连接器客户端将根据索引“管道”选项卡中的设置自动添加这些控制流参数。要控制任何新索引在创建时将具有哪些设置,请参阅部署范围的内容设置。参见管道设置

在索引的 Kibana UI 中,通过单击“管道”选项卡,然后单击设置 > 复制和自定义,您可以快速生成 3 个特定于您的索引的管道。这 3 个管道将替换索引的 search-default-ingestion。此操作不会造成任何损失,因为 <index-name> 管道是 search-default-ingestion 管道功能的超集。

重要提示

“复制和自定义”按钮并非在所有 Elastic 订阅级别都可用。请参阅 Elastic 订阅页面,了解 Elastic Cloud自管理 部署。

此管道的外观和行为与 search-default-ingestion 管道 非常相似,但具有 两个额外的处理器

警告

你不应该重命名这个管道。

警告

此管道是一个“托管”管道。这意味着它不打算被编辑。手动编辑/更新此管道可能会导致意外行为,或者在将来升级时遇到困难。如果要进行自定义,我们建议您使用 <index-name>@custom 管道

除了从 search-default-ingestion 管道 继承的处理器之外,特定于索引的管道还定义了

  • index_ml_inference_pipeline - 这使用 Pipeline 处理器来运行 <index-name>@ml-inference 管道。只有当源文档包含值为 true_run_ml_inference 字段时,才会运行此处理器。
  • index_custom_pipeline - 这使用 Pipeline 处理器来运行 <index-name>@custom 管道。

search-default-ingestion 管道一样,<index-name> 管道并非始终运行所有处理器。除了 _extract_binary_content_reduce_whitespace 控制流参数之外,<index-name> 管道还支持

  • _run_ml_inference - 如果此字段存在于源文档中,且值为 true,则管道将尝试运行 index_ml_inference_pipeline 处理器。如果源文档中缺少 _run_ml_inference 字段或值为 false,则此处理器将被跳过。

爬虫、原生连接器和连接器客户端将根据索引“管道”选项卡中的设置自动添加这些控制流参数。要控制任何新索引在创建时将具有哪些设置,请参阅部署范围的内容设置。参见管道设置

此管道在开始时为空(没有处理器),但可以通过 Kibana UI 添加到索引,可以通过索引的“管道”选项卡,或者通过堆栈管理 > 摄取管道页面。与 search-default-ingestion 管道和 <index-name> 管道不同,此管道不是“托管”的。

可以在内容 UI 中向索引添加一个或多个 ML 推理管道。此管道将用作配置用于索引的所有 ML 推理管道的容器。添加到索引的每个 ML 推理管道都在 <index-name>@ml-inference 中使用 pipeline 处理器引用。

警告

你不应该重命名这个管道。

注意

需要 monitor_ml Elasticsearch 集群权限才能管理使用这些模型的 ML 模型和 ML 推理管道。

此管道在开始时为空(没有处理器),但可以通过 Kibana UI 添加到索引,可以通过索引的“管道”选项卡,或者通过堆栈管理 > 摄取管道页面。与 search-default-ingestion 管道和 <index-name> 管道不同,此管道不是“托管”的。

我们鼓励您对此管道进行添加和编辑,前提是其名称保持不变。这提供了一个方便的钩子,可以从中为您的数据添加自定义处理和转换。请务必阅读 摄取管道文档,了解有哪些选项可用。

警告

你不应该重命名这个管道。

© . All rights reserved.