首页 > 解决方案 > ElasticSearch - 查询以将字符串附加到文档字段中的现有字符串

问题描述

我们所有的 ElasticSearch 文档都包含一个名为的字段,该字段Categories包含一串以逗号分隔的值。逗号之间的每个值的长度为 5 个字符,该字段可以是 1 到 12 个 5 个字符的值。

我需要对索引运行查询,该索引显示追加,ABCDECategories所有文档的字段末尾,除非该字段已经包含其中的值ABCDE,在这种情况下,不要向该字段追加任何内容。

标签: elasticsearch

解决方案


您可以使用 ElasticSearch _update_by_query,如下所示

POST my_index/my_type/_update_by_query
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "Categories": "ABCDE"
          }
        }
      ]
    }
  },
  "script": {
    "inline": "ctx._source.Categories += ', ABCDE'",
    "lang": "painless"
  }
}

', ABCDE'如果类别不包含该术语,则上述查询将字符串附加到类别ABCDE


推荐阅读