elasticsearch - 在摄取管道中使用搜索模板
问题描述
ElasticSearch 摄取管道可以使用搜索模板作为其脚本吗?
具体来说,我想配置一个摄取管道,以便每当进入特定类型的数据时,我们会在 ElasticSearch 中查询一些相关数据,并根据结果在原始数据上填充一个(或多个字段),然后再加载它在。
我看到摄取管道可以使用脚本(https://www.elastic.co/guide/en/elasticsearch/reference/master/script-processor.html),并且脚本可以包含搜索模板(https://www. elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-using.html),但我无法找到有关可能将两者结合起来的任何信息。
解决方案
实际上,您要求的功能是通过新的丰富处理器在 7.5 中提供的,该处理器提供索引时间 JOIN 功能。
主要思想是设置一个丰富策略,将来自相关索引的数据源到一个新的“丰富索引”中,然后您可以使用丰富处理器在摄取管道中利用该“丰富索引”,以丰富您的文档相关领域。
因此,无需过多详细说明,以下是它在实践中的工作方式:
A
您有一个包含字段 (a
,b
,c
, )的索引d
,您想使用它来丰富传入的文档- 您根据该索引
A
和“加入”字段定义丰富策略a
- 您定义了一个带有丰富处理器的摄取管道,它将尝试将
z
传入文档的字段A.a
与丰富索引的字段进行匹配 - 如果找到匹配项,您的传入文档将获得 fields
b
,c
并d
从 indexA
。请注意,它还将获得匹配字段 a ,remove
如果需要,您可以使用处理器将其删除。
这几乎是你所期望的。你可以在这里找到一个完整的例子。一开始,它将适用于精确匹配(即term
查询)和地理匹配(即geo_shape
查询),但它们可能会在不久的将来添加新类型的匹配(如range
匹配)。
推荐阅读
- python - 数据框按嵌套字典中的路径分组
- performance - Why does selenium chromedriver use less resources than regular chrome
- c - 使用 extern 关键字的链接未定义引用错误
- angular - 使用 Angular 和 Microsoft Web API 的 GoDaddy 虚拟主机
- azure - 将 Web 应用程序发布为 Azure 市场应用程序
- gnulib - 为什么当我使用 gcc 3.4.3 在 x86 Solaris 10 上构建 ratpoison 时会出现以下错误
- javascript - 检测 *ngIf 执行后何时加载组件
- amazon-web-services - 在 YAML 文件中设置 S3 存储桶的生命周期配置
- python - 如何在 colab.research 上安装 rpy2?
- path - haproxy 将 URL 路径重定向到另一个路径