首页 > 解决方案 > 创建一个连接其他字段的关键字字段

问题描述

我有一个包含 3 个字段映射的索引。假设和。f1_ 我想要一个新的关键字字段,其中的值串联,并且能够通过它进行聚合以避免在检查搜索结果时出现大量嵌套循环。f2f3
f1f2f3

我已经看到这可以通过source transformation来实现,但是从 elastic v5 开始,这个特性被删除了。

使用的 ElasticSearch 版本:6.5

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

标签: elasticsearchconcatenationelasticsearch-6

解决方案


在 ES 5 之前确实有源转换,但是从 ES 5 开始,现在有一个更强大的功能,称为摄取节点,它可以让您轻松实现所需的功能:

首先,使用set处理器定义摄取管道,该处理器将帮助您将三个字段连接为一个:

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索引第一个文档之前使用适当的映射创建索引即可。


推荐阅读