根据条件添加字段和值

时间:2018-06-20 19:51:19

标签: elasticsearch

我正在尝试根据现有索引上的条件添加字段和值。 背景: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 

1 个答案:

答案 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"
  }
}