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

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),但我无法找到有关可能将两者结合的任何信息

herichcq 回答:在提取管道中使用搜索模板

实际上,您所要求的功能是通过新的enrich processor提供的7.5版本中提供的,该功能提供了索引时间JOIN功能。

主要思想是设置一个enrich policy,该数据将从您的相关索引中获取数据到一个新的“丰富索引”中,然后您可以使用{{3 }},以丰富相关领域的文档。

因此,无需赘述太多,下面是它在实践中的工作方式:

  1. 您有一个索引import pandas as pd from pandas_datareader import data as web import matplotlib.pyplot as plt import datetime as datetime start = datetime.date(2008,1,1) end = datetime.date.today() start1 = datetime.date(2019,1) data = web.get_data_yahoo("AAPL",start,end) data1 = web.get_data_yahoo("AMZN",start1,end) ax = data.plot(y ="Close") data1.plot(y = "Close",ax=ax) ylims = ax.get_ylim() ax.vlines(start1,ylims[0],data1.Close[0],linestyles='--') ax.text(start1,ha='right',va='top',rotation=90) ax.set_ylim(ylims) ,其中包含要用于丰富传入内容的字段(Aabc文件
  2. 您基于该索引d和“联接”字段A定义扩展策略
  3. 您定义了具有丰富处理器的提取管道,该处理器将尝试将传入文档的字段a与丰富索引的字段z进行匹配
  4. 如果找到匹配项,则您的传入文档将从索引A.a中获取字段bcd。请注意,它还会获取匹配字段a,您可以根据需要使用A处理器删除该字段。

这几乎就是您所期望的。您可以找到完整的示例enrich processor。一开始,它将适用于完全匹配(即remove查询)和地理位置匹配(即term查询),但它们可能会在其中添加新的匹配类型(例如here)不久的将来。

,

因此ingest script管道已经是您想要的组合, 您应该使用if选项,详细了解here

您的管道应如下所示:

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

我建议您在创建管道后,使用simulate对其进行测试,因为这样会使您的工作变得更加轻松。

编辑:

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

本文链接:https://www.f2er.com/3066727.html

大家都在问