elasticsearch | update | by | query |在多值字段中保持唯一性

7eumitmz  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(339)

我有一个领域 field_keyword 在类型数组的elasticsearch索引中,我尝试附加 field_keyword 字段,但我希望避免将重复的值添加到列表中。
例如:
如果我两次通过下面的请求,

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "field": "Invoice Number"
          }
        },
        {
          "term": {
            "locale": "US"
          }
        }
      ]
    }
  },
 "script": {
    "source": "ctx._source.field_keyword.add(params.new_field_keyword);",
    "params": {
      "new_field_keyword": "Invois #"
    }
  }
}

价值 "Invois #" 添加两次,

"field_keyword": [      "TAX INVOICE NO. :",
                        "Invois #",
                        "Invois #"]

如何避免元素被添加两次。

wixjitnu

wixjitnu1#

如何避免元素被添加两次。
仅当值不存在时添加。
例如:

{
  "query": {
    "bool": {
  "must": [
    {
      "term": {
        "field": "Invoice Number"
      }
    },
    {
      "term": {
        "locale": "US"
      }
    }
  ]
}
  },
  "script": {
    "source": "if(!ctx._source.field_keyword.contains(params.new_field_keyword)){ctx._source.field_keyword.add(params.new_field_keyword)}",
    "params": {
      "new_field_keyword": "Invois #"
    }
  }
}

相关问题