我正在尝试根据现有索引上的条件添加字段和值。 背景:1000万个“行”和一个索引。
最有效的方法是:
If field_a = 1 and (field_b > 0 or field_c > 0 or field_d > 0)
then
add new field field_e with value = 1
else
add new field field_e with value = 0
答案 0 :(得分:2)
使用update by query API绝对可以实现:
POST index/_update_by_query
{
"query": {
"bool": {
"filter": [
{"exists": {"field": "field_a"}},
{"exists": {"field": "field_b"}},
{"exists": {"field": "field_c"}},
{"exists": {"field": "field_d"}}
]
}
},
"script": {
"source": "ctx._source.field_e = (ctx._source.field_a == 1 && (ctx._source.field_b > 0 || ctx._source.field_c > 0 || ctx._source.field_d > 0)) ? 1 : 0"
}
}