我在类型数组的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 #"
}
}
}