摄取处理器 #
摄取处理器是摄取管道的核心组件。它们在索引之前对文档进行预处理。例如,您可以删除字段、从文本中提取值、转换数据格式或添加附加信息。
Easysearch 在您的 Easysearch 安装中提供了一套标准的摄取处理器。要获取 Easysearch 中可用的处理器列表,请使用节点信息 API 操作:
GET /_nodes/ingest?filter_path=nodes.*.ingest.processors
支持的处理器 #
处理器类型及其所需或可选参数根据您的具体用例而异。Easysearch 支持以下摄取处理器。有关在 Easysearch 管道中使用这些处理器的教程,请参阅每个处理器的相应文档。
| 处理器名称 | 使用介绍 |
|---|---|
append | 向文档中的一个字段添加一个或多个值。 |
bytes | 将可读的字节值转换为字节数值。 |
convert | 更改文档中字段的数据类型。 |
csv | 从 CSV 中提取并作为单独的字段存储在文档中。 |
date | 从字段中解析日期,然后使用日期或时间戳作为文档的时间戳。 |
date_index_name | 根据文档中的日期或时间戳字段将文档索引到基于时间的索引中。 |
dissect | 从文本字段中提取结构化字段,使用定义的模式。 |
dot_expander | 将带有点的字段扩展为对象字段。 |
drop | 丢弃文档,不进行索引或引发任何错误。 |
fail | 引发异常并停止管道的执行。 |
foreach | 允许将另一个处理器应用于文档中数组或对象字段的每个元素。 |
geoip | 添加有关 IP 地址地理位置的信息。 |
geojson-feature | 将 GeoJSON 数据索引到地理空间字段中。 |
grok | 解析并使用模式匹配结构非结构化数据。 |
gsub | 替换或删除文档字符串字段中的子字符串。 |
html_strip | 从文本字段中移除 HTML 标签并返回纯文本内容。 |
join | 将数组中的每个元素连接成一个单独的字符串,元素之间用分隔符字符隔开。 |
json | 将 JSON 字符串转换为结构化的 JSON 对象。 |
kv | 自动解析字段中的键值对。 |
lowercase | 将特定字段中的文本转换为小写字母。 |
pipeline | 运行内部管道。 |
remove | 从文档中删除字段。 |
rename | 重命名现有字段。 |
script | 在传入的文档上运行内联或存储的脚本。 |
set | 将字段的值设置为指定的值。 |
sort | 按升序或降序对数组元素进行排序。 |
split | 将字段使用分隔符字符拆分为数组。 |
trim | 移除字符串字段的前导和尾随空白字符。 |
uppercase | 将特定字段中的文本转换为 uppercase 字母。 |
urldecode | 将 URL 编码的字符串解码。 |
user_agent | 从浏览器发送到其网页请求的用户代理中提取详细信息。 |
处理器限制设置 #
您可以使用集群设置 cluster.ingest.max_number_processors 来限制摄入处理器的数量。处理器总数包括处理器数量和 on_failure 处理器数量。
cluster.ingest.max_number_processors 的默认值是 Integer.MAX_VALUE 。如果添加的处理器数量超过 cluster.ingest.max_number_processors 中配置的值,将抛出 IllegalStateException 。
支持批处理的处理器 #
一些处理器支持批量摄取——它们可以作为一个批次同时处理多个文档。这些支持批处理的处理器在批量处理时通常提供更好的性能。对于批量处理,请使用批量 API 并提供一个 batch_size 参数。所有支持批处理的处理器都有批量模式和单文档模式。当您使用 PUT 方法摄取文档时,处理器以单文档模式运行并按顺序处理文档。目前,只有 text_embedding 和 sparse_encoding 处理器支持批量处理。所有其他处理器一次只处理一个文档。
选择性启用处理器 #
通过提供 ingest-common.processors.allowed 集群设置,可以选择性启用由 ingest-common 模块定义的处理器。如果没有提供,则默认启用所有处理器。指定一个空列表将禁用所有处理器。如果将设置更改为删除之前启用的处理器,则在新设置生效后,任何使用已禁用处理器的管道在节点重启后将失败。