繁体   English   中英

在摄取管道中使用搜索模板

[英]Using a search template in an ingest pipeline

ElasticSearch 摄取管道可以使用搜索模板作为其脚本吗?

具体来说,我想配置一个摄取管道,以便每当进入特定类型的数据时,我们查询 ElasticSearch 以获取一些相关数据,并根据结果在原始数据上填充一个(或多个字段),然后再加载它在。

我看到摄取管道可以使用脚本( https://www.elastic.co/guide/en/elasticsearch/reference/master/script-processor.html ),并且脚本可以包含搜索模板( Z5E056Z1://050AD8407BADEA7 elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-using.html ),但我还没有找到任何可能将两者结合起来的信息。

实际上,您要求的功能是通过新的丰富处理器在 7.5 中提供的,该处理器提供索引时间 JOIN 功能。

主要思想是设置一个丰富策略,将来自相关索引的数据源到一个新的“丰富索引”中,然后您可以使用丰富处理器在摄取管道中利用该“丰富索引”,以丰富您的文档相关领域。

因此,无需过多详细说明,以下是它在实践中的工作方式:

  1. 您有一个索引A ,其中包含要用于丰富传入文档的字段( abcd
  2. 您根据该索引A和“加入”字段a定义丰富策略
  3. 您定义了一个带有丰富处理器的摄取管道,该处理器将尝试将传入文档的字段z与丰富索引的字段Aa进行匹配
  4. 如果找到匹配项,您的传入文档将从索引A中获取字段bcd 请注意,它还将获得匹配字段 a ,如果需要,您可以使用remove处理器删除该字段。

这几乎是你所期望的。 你可以在这里找到一个完整的例子。 一开始,它将适用于精确匹配(即term查询)和地理匹配(即geo_shape查询),但它们可能会在不久的将来添加新类型的匹配(如range匹配)。

因此, ingest script管道已经是您正在寻找的组合,您应该使用if选项,请在此处阅读。

您的管道应如下所示:

{
    "script": {
        "if": "ctx.type == 'thisType'",
        "source": """
                  //calculation here
                  ctx.newField = value;
                  """
    }
}

我建议您在创建管道后使用模拟对其进行测试,因为它会让您的生活更轻松。

编辑:

感谢@val,它消除了我的一些困惑。 所以你不能真正做你想做的事,但我建议你阅读有关丰富管道的信息。 通过一些设置,您也许可以实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM