针对搜索应用场景的摄入管道
您可以通过 Elasticsearch API 或 Kibana UI 管理写入管道。
Connectors(连接器)下的 Pipelines(管道)选项卡允许您管理连接器目标索引所使用的写入管道。在此处,您可以查看托管管道并调整其设置。如需进行常规管道创作,请使用导航菜单或全局搜索字段转到 Ingest Pipelines 管理页面。
要使用这些 UI 工具处理写入管道,请打开 Pipelines 选项卡。
在 Kibana UI 中找到此选项卡
- 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors。
- 选择您要操作的连接器。例如,
azure-blob-storage。 - 在连接器的页面上,打开 Pipelines 选项卡。
- 从这里开始,您可以按照说明创建自定义管道,并设置 ML 推理管道。
以下屏幕截图突出显示了该选项卡
通过为文档提供一层自定义和后处理功能,这些工具会非常有用。例如
- 从二进制数据类型中一致地提取文本
- 确保格式一致
- 提供一致的数据过滤步骤(移除电话号码或 SSN 等 PII)
从头开始设置和管理生产就绪的管道可能需要大量工作。必须将错误处理、条件执行、排序、版本控制和模块化等因素考虑在内。
为此,当您为搜索用例创建索引(包括连接器和 API 索引)时,每个索引都已配置好一个包含多个处理器的管道,用于优化搜索内容。
此管道称为 search-default-ingestion。虽然它是一个“托管”管道(意味着不应擅自修改),但您可以通过 Kibana UI 或 Elasticsearch API 查看其详细信息。您还可以在下方阅读有关其内容的更多信息。
您可以控制是否运行其中某些处理器。虽然所有功能默认均已启用,但您可以选择退出。对于连接器,您可以按索引选择退出(或重新加入),系统会保存您的选择。对于 API 索引,您可以通过在文档中包含特定字段来选择退出(或重新加入)。详情请参见下文。
在部署级别,您可以更改所有新索引的默认设置。这不会影响现有索引。
每个索引还能够轻松创建具有可定制处理流程的特定于索引的写入管道。如果您需要这种额外的灵活性,可以前往管道设置并选择“复制并自定义”来创建自定义管道。这会将索引使用的 search-default-ingestion 替换为 3 个新生成的管道
<index-name><index-name>@custom<index-name>@ml-inference
与 search-default-ingestion 类似,其中第一个是“托管”的,但另外两个可以并且应该进行修改以满足您的需求。您可以使用平台工具(Kibana UI、Elasticsearch API)查看这些管道,还可以在下方阅读有关其内容的更多信息。
除了管道本身,您还有几个配置选项,用于控制管道的各个功能。
Extract Binary Content(提取二进制内容)- 这控制是否应处理二进制文档并提取其中的文本内容。
Reduce Whitespace(减少空白字符)- 这控制是否应删除连续、前导和尾随的空白字符。这有助于在某些搜索体验中显示更多内容。
Run ML Inference(运行 ML 推理)- 仅在特定于索引的管道上可用。这控制是否运行可选的
<index-name>@ml-inference管道。默认启用。对于连接器,您可以按索引选择加入或退出。这些设置存储在 Elasticsearch 的
.elastic-connectors索引中、与特定索引对应的文档中。您可以直接在那个地方更改这些设置。或者,您也可以- 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors。
- 选择您的连接器,然后转到 Pipelines > Settings 进行更改。
您还可以更改整个部署范围的默认设置。这些设置存储在
.elastic-connectors的 Elasticsearch 映射的_meta部分中。您可以直接在此处更改这些设置。或者,您也可以- 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors。
- 选择您的连接器,然后转到 Configuration 进行更改。
更改整个部署范围的默认设置不会影响任何现有索引,而只会影响任何新创建索引的默认值。这些默认值仍然可以被特定于索引的设置所覆盖。
对于“使用 API”的索引,这些设置不会持久化保存。相反,更改这些设置会实时改变所显示的示例 cURL 请求。请注意,cURL 请求中的示例文档包含三个以下划线开头的字段
{
...
"_extract_binary_content": true,
"_reduce_whitespace": true,
"_run_ml_inference": true
}
省略这些特殊字段之一等同于将其值指定为 false。
您还必须在索引请求中指定管道。示例 cURL 请求中也展示了这一点。
如果未指定管道,则带下划线前缀的字段实际上会被建立索引,且不会影响任何处理行为。
使用 Elasticsearch Ingest Pipelines API 访问此管道,或者使用导航菜单或全局搜索字段转到 Ingest Pipelines 管理页面。
此管道是一个“托管”管道。这意味着它不应该被编辑。手动编辑/更新此管道可能会导致意外行为,或者在将来升级时遇到困难。如果您想进行自定义,建议您利用特定于索引的管道(见下文),具体为 <index-name>@custom 管道。
attachment- 这使用 Attachment 处理器将存储在文档_attachment字段中的任何二进制数据转换为纯文本和元数据的嵌套对象。set_body- 这使用 Set 处理器复制从上一步中提取的任何纯文本,并将其持久化保存到文档的body字段中。remove_replacement_chars- 这使用 Gsub 处理器从body字段中移除诸如“”之类的字符。remove_extra_whitespace- 这使用 Gsub 处理器将body字段中的连续空白字符替换为单个空格。虽然并非对所有用例都完美(有关如何禁用,请参见下文),但这可以确保搜索体验为您的搜索结果显示更多内容和高亮显示,并减少空白空间。trim- 这使用 Trim 处理器从body字段中移除任何剩余的前导或尾随空白字符。remove_meta_fields- 管道的最后一步使用 Remove 处理器移除可能已在管道其他地方使用过的特殊字段,无论它们是作为临时存储还是作为控制流参数。
search-default-ingestion 管道并不总是运行所有处理器。它利用写入管道的一项功能,根据每个独立文档的内容有条件地运行处理器。
_extract_binary_content- 如果源文档中存在此字段且其值为true,则管道将尝试运行attachment、set_body和remove_replacement_chars处理器。请注意,文档还需要包含填充了 base64 编码二进制数据的_attachment字段,以便attachment处理器能够有任何输出。如果源文档缺少_extract_binary_content字段或其值为false,则将跳过这些处理器。_reduce_whitespace- 如果源文档中存在此字段且其值为true,则管道将尝试运行remove_extra_whitespace和trim处理器。这些处理器仅应用于body字段。如果源文档缺少_reduce_whitespace字段或其值为false,则将跳过这些处理器。
连接器将根据索引的 Pipeline 选项卡中的设置自动添加这些控制流参数。要控制任何新索引在创建时所拥有的设置,请参阅部署范围的内容设置。请参阅 Pipeline Settings。
在索引的 Kibana UI 中,通过选择 Pipelines 选项卡,然后选择 Copy and customize,您可以快速生成 3 个特定于您的索引的管道。这 3 个管道替换了该索引的 search-default-ingestion。此操作不会丢失任何功能,因为 <index-name> 管道是 search-default-ingestion 管道功能的超集。
“copy and customize”按钮并非在所有 Elastic 订阅级别中都可用。有关详情,请参考 Elastic Cloud 和自管部署的 Elastic 订阅页面。
此管道的外观和行为与 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,则将跳过此处理器。
连接器将根据索引的 Pipeline 选项卡中的设置自动添加这些控制流参数。要控制任何新索引在创建时所拥有的设置,请参阅部署范围的内容设置。请参阅 Pipeline Settings。
此管道初始时为空(无处理器),但可以通过 Kibana UI 进行添加,既可以通过索引的 Pipelines 选项卡,也可以通过使用导航菜单或全局搜索字段导航到 Ingest Pipelines 管理页面。与 search-default-ingestion 管道和 <index-name> 管道不同,此管道不是“托管”的。
可以在 Pipelines 选项卡中向索引添加一个或多个 ML 推理管道。此管道将用作为该索引配置的所有 ML 推理管道的容器。添加至索引的每个 ML 推理管道都在 <index-name>@ml-inference 中通过 pipeline 处理器进行引用。
您不应重命名此管道。
为了管理 ML 模型和使用这些模型的 ML 推理管道,需要具备 monitor_ml Elasticsearch 集群权限。
此管道初始时为空(无处理器),但可以通过 Kibana UI 进行添加,既可以通过索引的 Pipelines 选项卡,也可以通过使用导航菜单或全局搜索字段转到 Ingest Pipelines 管理页面。与 search-default-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 网络爬虫索引默认都使用了此管道。此管道后来演变为search-default-ingestion管道。search-default-ingestion- 自 9.0 起,连接器默认开始使用此管道。您可以在上方阅读有关此管道的更多信息。由于此管道是“托管”的,因此对app_search_crawler和/或ent_search_crawler所做的任何修改都不应应用到search-default-ingestion中。相反,如果您希望进行此类自定义,则应利用特定于索引的写入管道,将所有修改都放在<index-name>@custom管道中。