加载中

针对搜索应用场景的摄入管道

您可以通过 Elasticsearch API 或 Kibana UI 管理写入管道。

Connectors(连接器)下的 Pipelines(管道)选项卡允许您管理连接器目标索引所使用的写入管道。在此处,您可以查看托管管道并调整其设置。如需进行常规管道创作,请使用导航菜单或全局搜索字段转到 Ingest Pipelines 管理页面。

要使用这些 UI 工具处理写入管道,请打开 Pipelines 选项卡。

在 Kibana UI 中找到此选项卡

  1. 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors
  2. 选择您要操作的连接器。例如,azure-blob-storage
  3. 在连接器的页面上,打开 Pipelines 选项卡。
  4. 从这里开始,您可以按照说明创建自定义管道,并设置 ML 推理管道。

以下屏幕截图突出显示了该选项卡

ingest pipeline ent search ui

通过为文档提供一层自定义和后处理功能,这些工具会非常有用。例如

  • 从二进制数据类型中一致地提取文本
  • 确保格式一致
  • 提供一致的数据过滤步骤(移除电话号码或 SSN 等 PII)

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

为此,当您为搜索用例创建索引(包括连接器和 API 索引)时,每个索引都已配置好一个包含多个处理器的管道,用于优化搜索内容。

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

您可以控制是否运行其中某些处理器。虽然所有功能默认均已启用,但您可以选择退出。对于连接器,您可以按索引选择退出(或重新加入),系统会保存您的选择。对于 API 索引,您可以通过在文档中包含特定字段来选择退出(或重新加入)。详情请参见下文

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

每个索引还能够轻松创建具有可定制处理流程的特定于索引的写入管道。如果您需要这种额外的灵活性,可以前往管道设置并选择“复制并自定义”来创建自定义管道。这会将索引使用的 search-default-ingestion 替换为 3 个新生成的管道

  1. <index-name>
  2. <index-name>@custom
  3. <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 索引中、与特定索引对应的文档中。您可以直接在那个地方更改这些设置。或者,您也可以

    1. 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors
    2. 选择您的连接器,然后转到 Pipelines > Settings 进行更改。
  • 您还可以更改整个部署范围的默认设置。这些设置存储在 .elastic-connectors 的 Elasticsearch 映射的 _meta 部分中。您可以直接在此处更改这些设置。或者,您也可以

    1. 使用全局搜索字段查找连接器,然后从结果中选择 Build / Connectors
    2. 选择您的连接器,然后转到 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 管道

  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 - 管道的最后一步使用 Remove 处理器移除可能已在管道其他地方使用过的特殊字段,无论它们是作为临时存储还是作为控制流参数。

search-default-ingestion 管道并不总是运行所有处理器。它利用写入管道的一项功能,根据每个独立文档的内容有条件地运行处理器

  • _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,则将跳过这些处理器。

连接器将根据索引的 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> 管道不同,此管道不是“托管”的。

只要此管道的名称保持不变,我们鼓励您对其进行添加和编辑。这为您为数据添加自定义处理和转换提供了一个便捷的切入点。请务必阅读写入管道文档以了解有哪些可用选项。

警告

您不应重命名此管道。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.