繁体   English   中英

Elasticsearch | 通过查询更新 | 在多值字段中保持唯一性

[英]Elasticsearch | update_by_query | Maintain uniqueness in a multi-value field

我的 elasticsearch 类型数组索引中有一个字段field_keyword ,我正在尝试使用新值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 #"]

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

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

仅在值不存在时添加。

例如:

{
  "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 #"
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM