创建一个与其他字段串联的关键字字段

Create a keyword field concatenated of other fields

我有一个包含 3 个字段映射的索引。假设 f1f2f3.
我想要一个具有 f1f2f3 值的 concatenation 的新关键字字段,以便能够通过它进行聚合以避免检查搜索结果时出现大量嵌套循环。

我看到这可以通过源转换来实现,但是自elastic v5以来,这个功能被删除了。

使用的 ElasticSearch 版本:6.5

问:如何在 ElasticSearch v 6.5 中实现连接?

在 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 创建具有适当映射的索引。