搜索中的数据摄取管道

编辑

您可以通过 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,如电话号码或社会安全号码)

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

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

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

您可以控制是否运行其中一些处理器。虽然默认情况下所有功能都已启用,但它们可以选择退出。对于 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 在 搜索 > 内容 > 索引 > <您的索引> > 管道 > 设置 中更改。

您还可以更改部署范围内的默认值。这些设置存储在 .elastic-connectors 的 Elasticsearch 映射的 _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 访问此管道。

此管道是一个“托管”管道。这意味着它不打算被编辑。手动编辑/更新此管道可能会导致意外行为,或者将来升级困难。如果您想进行自定义,我们建议您使用索引特定的管道(见下文),特别是 <索引名称>@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 中,单击“管道”选项卡,然后单击设置 > 复制并自定义,您可以快速生成 3 个特定于您的索引的管道。这 3 个管道将替换索引的ent-search-generic-ingestion。此操作不会丢失任何内容,因为<index-name>管道是ent-search-generic-ingestion管道的功能超集。

并非所有 Elastic 订阅级别都提供“复制并自定义”按钮。有关Elastic Cloud自托管部署,请参阅 Elastic 订阅页面。

<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 添加。与ent-search-generic-ingestion管道和<index-name>管道不同,此管道不是“托管”的。

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

您不应重命名此管道。

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

<index-name>@custom 参考
编辑

此管道最初为空(没有处理器),但可以通过索引的“管道”选项卡或堆栈管理 > 摄取管道页面通过 Kibana UI 添加。与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进行任何修改。相反,如果需要此类自定义,则应使用特定于索引的摄取管道,并将所有修改放在<index-name>@custom管道中。