创建由其他字段串联而成的关键字字段

时间:2019-02-25 11:09:00

标签: elasticsearch concatenation elasticsearch-6

我有一个索引,其中包含3个字段的映射。假设f1f2f3
我希望具有f1f2f3的值的串联的新关键字字段能够通过其进行聚合,以避免嵌套过多在检查搜索结果时循环播放。

我已经看到,可以通过源转换实现此功能,但是由于弹性v5,此功能已删除。

使用的ElasticSearch版本:6.5

问:如何在ElasticSearch v 6.5中归档串联?

1 个答案:

答案 0 :(得分:0)

在ES 5之前确实存在源转换,但是从ES 5开始,现在有一个更强大的功能称为ingest nodes,它将使您轻松实现所需的功能:

首先,使用set processor定义一个接收管道,这将帮助您将三个字段连接为一个字段:

PUT _ingest/pipeline/concat
{
  "processors": [
    {
      "set": {
        "field": "field4",
        "value": "{{field1}} {{field2}} {{field3}}"
      }
    }
  ]
}

然后您可以使用该管道为文档建立索引:

PUT index/doc/1?pipeline=concat
{
  "field1": "1",
  "field2": "2",
  "field3": "3"
}

索引文档将如下所示:

{
  "field1": "1",
  "field2": "2",
  "field3": "3",
  "field4": "1 2 3"
}

在索引第一个文档之前,请确保为field4创建具有适当映射的索引。