搜索中的摄取管道编辑

您可以通过 Elasticsearch API 或 Kibana UI 管理摄取管道。

搜索 下的 内容 UI 提供了一组工具,用于创建和管理针对搜索用例(非时间序列数据)优化的索引。您也可以在此 UI 中管理您的摄取管道。

在内容 UI 中查找管道编辑

要使用这些 UI 工具处理摄取管道,您将使用搜索优化 Elasticsearch 索引上的 管道 选项卡。

要在 Kibana UI 中找到此选项卡

  1. 转到 搜索 > 内容 > Elasticsearch 索引
  2. 选择您要处理的索引。例如,search-my-index
  3. 在索引的概述页面上,打开 管道 选项卡。
  4. 从这里,您可以按照说明创建自定义管道,并设置 ML 推理管道。

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

ingest pipeline ent search ui

概述编辑

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

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

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

为此,当您为搜索用例创建索引时(包括 Elastic Web 爬虫Elastic 连接器 和 API 索引),每个索引都已设置了一个管道,其中包含多个处理器,这些处理器可以优化您的内容以进行搜索。

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

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

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

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

  1. <索引名称>
  2. <索引名称>@custom
  3. <索引名称>@ml-inference

ent-search-generic-ingestion 一样,这些管道中的第一个是“托管”的,但另外两个可以并且应该修改以满足您的需求。您可以使用平台工具(Kibana UI、Elasticsearch API)查看这些管道,也可以 阅读有关其内容的更多信息

管道设置编辑

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

  • 提取二进制内容 - 这控制是否应处理二进制文档以及是否应提取任何文本内容。
  • 减少空格 - 这控制是否应删除连续的、前导的和尾随的空格。这有助于在某些搜索体验中显示更多内容。
  • 运行 ML 推理 - 仅适用于索引特定管道。这控制是否应运行可选的 <索引名称>@ml-inference 管道。默认情况下启用。

对于 Elastic Web 爬虫和连接器,您可以选择加入或退出每个索引。这些设置存储在 Elasticsearch 中的 .elastic-connectors 索引中,在与特定索引相对应的文档中。这些设置可以直接在那里更改,也可以通过 Kibana UI 在 搜索 > 内容 > 索引 > <您的索引> > 管道 > 设置 中更改。

您也可以更改部署范围的默认值。这些设置存储在 Elasticsearch 映射中,用于 .elastic-connectors 中的 _meta 部分。这些设置可以直接在那里更改,也可以从 Kibana UI 的 搜索 > 内容 > 设置 选项卡更改。更改部署范围的默认值不会影响任何现有索引,但只会影响任何新创建的索引默认值。这些默认值仍然可以通过索引特定设置覆盖。

使用 API编辑

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

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

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

您还必须在索引请求中指定管道。这也显示在示例 cURL 请求中。

如果未指定管道,下划线前缀字段实际上将被索引,并且不会影响任何处理行为。

详细信息编辑

ent-search-generic-ingestion 参考编辑

您可以使用 Elasticsearch 摄取管道 API 或通过 Kibana 的 堆栈管理 > 摄取管道 UI 访问此管道。

此管道是一个“托管”管道。这意味着它不打算被编辑。手动编辑/更新此管道可能会导致意外行为,或者在将来升级时遇到困难。如果您想进行自定义,我们建议您使用索引特定管道(见下文),特别是 the <索引名称>@custom 管道

处理器编辑
  1. attachment - 这使用 附件 处理器将存储在文档的 _attachment 字段中的任何二进制数据转换为纯文本和元数据的嵌套对象。
  2. set_body - 这使用 设置 处理器复制从上一步提取的任何纯文本,并将其持久化到文档中的 body 字段。
  3. remove_replacement_chars - 这使用 Gsub 处理器从 body 字段中删除诸如“�”之类的字符。
  4. remove_extra_whitespace - 这使用 Gsub 处理器将 body 字段中的连续空格字符替换为单个空格。虽然它并不适合所有用例(见下文如何禁用),但这可以确保搜索体验显示更多内容和突出显示,以及更少的搜索结果空白。
  5. trim - 这使用 修剪 处理器从 body 字段中删除任何剩余的前导或尾随空格。
  6. remove_meta_fields - 管道的最后一步使用 删除 处理器删除可能在管道中其他地方使用过的特殊字段,无论是作为临时存储还是作为控制流参数。
控制流参数编辑

ent-search-generic-ingestion 管道并不总是运行所有处理器。它利用摄取管道的功能来 有条件地运行处理器,具体取决于每个单独文档的内容。

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

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

索引特定摄取管道编辑

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

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

<index-name> 参考编辑

此管道看起来和行为与 ent-search-generic-ingestion 管道 非常相似,但它包含 两个额外的处理器

您不应该重命名此管道。

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

处理器编辑

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

  • index_ml_inference_pipeline - 它使用 管道 处理器运行 <index-name>@ml-inference 管道。此处理器仅在源文档包含值为 true_run_ml_inference 字段时才会运行。
  • index_custom_pipeline - 它使用 管道 处理器运行 <index-name>@custom 管道。
控制流参数编辑

ent-search-generic-ingestion 管道类似,<index-name> 管道并不总是运行所有处理器。除了 _extract_binary_content_reduce_whitespace 控制流参数之外,<index-name> 管道还支持

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

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

<index-name>@ml-inference 参考编辑

此管道最初为空(没有处理器),但可以通过 Kibana UI 添加,无论是通过索引的 Pipelines 选项卡,还是通过 堆栈管理 > 摄取管道 页面。与 ent-search-generic-ingestion 管道和 <index-name> 管道不同,此管道不是“托管”的。

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

您不应该重命名此管道。

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

<index-name>@custom 参考编辑

此管道最初为空(没有处理器),但可以通过 Kibana UI 添加,无论是通过索引的 Pipelines 选项卡,还是通过 堆栈管理 > 摄取管道 页面。与 ent-search-generic-ingestion 管道和 <index-name> 管道不同,此管道不是“托管”的。

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

您不应该重命名此管道。

升级说明编辑

展开以查看升级说明
  • app_search_crawler - 从 8.3 开始,App Search 网页爬虫已利用此管道为其二进制内容提取提供支持。您可以在 App Search 指南 中详细了解此管道及其用法。从 8.3 升级到 8.5+ 时,请务必注意您对 app_search_crawler 管道所做的任何更改。这些更改应重新应用于每个索引的 <index-name>@custom 管道,以确保一致的数据处理体验。在 8.5+ 中,启用二进制内容的索引设置 是必需的,此外还需要 App Search 指南 中提到的配置。
  • ent_search_crawler - 从 8.4 开始,Elastic 网页爬虫已利用此管道为其二进制内容提取提供支持。您可以在 Elastic 网页爬虫指南 中详细了解此管道及其用法。从 8.4 升级到 8.5+ 时,请务必注意您对 ent_search_crawler 管道所做的任何更改。这些更改应重新应用于每个索引的 <index-name>@custom 管道,以确保一致的数据处理体验。在 8.5+ 中,启用二进制内容的索引设置 是必需的,此外还需要 Elastic 网页爬虫指南 中提到的配置。
  • ent-search-generic-ingestion - 从 8.5 开始,原生连接器、连接器客户端和新的(>8.4)Elastic 网页爬虫索引默认情况下都将使用此管道。您可以在上面 详细了解此管道。由于此管道是“托管”的,因此对 app_search_crawler 和/或 ent_search_crawler 所做的任何修改都不应在 ent-search-generic-ingestion 中进行。相反,如果需要进行此类自定义,则应使用 特定于索引的摄取管道,并将所有修改放在 <index-name>@custom 管道中。