数据扩充
编辑数据扩充编辑
ES|QL ENRICH
处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 扩充索引中找到的字段值组合相结合。
例如,您可以使用 ENRICH
来
- 根据已知的 IP 地址识别 Web 服务或供应商
- 根据产品 ID 将产品信息添加到零售订单中
- 根据电子邮件地址补充联系信息
ENRICH
命令的工作原理编辑
ENRICH
命令使用 Elasticsearch 索引中的数据向表中添加新列。它需要一些特殊的组件
- 源索引
- 存储
ENRICH
命令可以添加到输入表中的扩充数据的索引。您可以像管理常规 Elasticsearch 索引一样创建和管理这些索引。您可以在一个扩充策略中使用多个源索引。您还可以在多个扩充策略中使用相同的源索引。
- 扩充索引
-
绑定到特定扩充策略的特殊系统索引。
将输入表中的行直接与源索引中的文档匹配可能会很慢且占用大量资源。为了加快速度,
ENRICH
命令使用扩充索引。扩充索引包含来自源索引的扩充数据,但具有一些特殊属性以帮助简化它们
- 它们是系统索引,这意味着它们由 Elasticsearch 内部管理,并且仅供扩充处理器和 ES|QL
ENRICH
命令使用。 - 它们始终以
.enrich-*
开头。 - 它们是只读的,这意味着您不能直接更改它们。
- 它们已 强制合并 以便快速检索。
- 它们是系统索引,这意味着它们由 Elasticsearch 内部管理,并且仅供扩充处理器和 ES|QL
设置扩充策略编辑
要开始使用 ENRICH
,请按照以下步骤操作
ENRICH
命令执行多项操作,可能会影响查询速度。
先决条件编辑
要使用扩充策略,您必须具有
-
对使用的任何索引的
read
索引权限 enrich_user
内置角色
添加扩充数据编辑
首先,将文档添加到一个或多个源索引。这些文档应包含您最终要添加到传入数据中的扩充数据。
您可以使用 文档 和 索引 API 像管理常规 Elasticsearch 索引一样管理源索引。
您还可以设置 Beats(例如 Filebeat)来自动将文档发送并索引到您的源索引。请参阅 Beats 入门。
创建扩充策略编辑
将扩充数据添加到源索引后,使用 创建扩充策略 API 或 Kibana 中的索引管理 来创建扩充策略。
创建后,您将无法更新或更改扩充策略。请参阅 更新扩充策略。
执行扩充策略编辑
创建扩充策略后,您需要使用 执行扩充策略 API 或 Kibana 中的索引管理 来执行它以创建 扩充索引。
*扩充索引* 包含来自策略源索引的文档。扩充索引始终以 .enrich-*
开头,是只读的,并且已 强制合并。
扩充索引应仅由 扩充处理器 或 ES|QL ENRICH
命令 使用。避免将扩充索引用于其他目的。
使用扩充策略编辑
执行策略后,您可以使用 ENRICH
命令 来扩充您的数据。
以下示例使用 languages_policy
扩充策略为策略中定义的每个扩充字段添加一个新列。匹配是使用 扩充策略 中定义的 match_field
执行的,并且要求输入表具有一列具有相同的名称(在本例中为 language_code
)。ENRICH
将根据匹配字段值在 扩充索引 中查找记录。
ROW language_code = "1" | ENRICH languages_policy
language_code:keyword | language_name:keyword |
---|---|
1 |
英语 |
要使用与策略中定义的 match_field
不同的名称的列作为匹配字段,请使用 ON <列名>
ROW a = "1" | ENRICH languages_policy ON a
a:keyword | language_name:keyword |
---|---|
1 |
英语 |
默认情况下,策略中定义的每个扩充字段都添加为一列。要显式选择添加的扩充字段,请使用 WITH <字段 1>, <字段 2>, ...
ROW a = "1" | ENRICH languages_policy ON a WITH language_name
a:keyword | language_name:keyword |
---|---|
1 |
英语 |
您可以使用 WITH 新名称=<字段 1>
重命名添加的列
ROW a = "1" | ENRICH languages_policy ON a WITH name = language_name
a:keyword | name:keyword |
---|---|
1 |
英语 |
如果发生名称冲突,新创建的列将覆盖现有列。
更新扩充索引编辑
创建后,您无法更新或索引文档到扩充索引。而是更新您的源索引并再次 执行 扩充策略。这将从您更新的源索引创建一个新的扩充索引。先前的扩充索引将通过延迟维护作业删除。默认情况下,每 15 分钟执行一次。
更新扩充策略编辑
创建后,您将无法更新或更改扩充策略。相反,您可以
- 创建并 执行 新的扩充策略。
- 在任何正在使用的扩充处理器或 ES|QL 查询中,将先前的扩充策略替换为新的扩充策略。
- 使用 删除扩充策略 API 或 Kibana 中的索引管理 来删除先前的扩充策略。
限制编辑
ES|QL ENRICH
命令仅支持类型为 match
的扩充策略。此外,ENRICH
仅支持对 keyword
类型的列进行扩充。