是否可以使用update_by_query API更新到elasticsearch中包含字段数组的文档?

时间:2017-03-23 10:30:54

标签: elasticsearch

我在索引中的所有文档中都有一个包含以下内容的文档:

   "universities": {
                      "number": 1,
                      "state": [
                         {
                            "Name": "michigan",
                            "country": "us",
                            "code": 5696
                         }
                      ]
                   }

我想像这样

更新索引中的所有文档
  "universities": {
                      "number": 1,
                      "state": [
                         {
                            "Name": "michigan",
                            "country": "us",
                            "code": 5696
                         },                          
                         {
                            "Name": "seatle",
                            "country": "us",
                            "code": 5695
                         }
                      ]
                   }

这可以使用elasticsearch 2.4.1中的update_by_query吗?

我尝试了以下查询:

"script": {
    "inline": "for(i in ctx._source.univeristies.state){i.name=Text}",
    "params": {
      "Text": "seatle"
    }
  }
}

但是将名称附加到现有名称而不是在列表中创建新名称。

1 个答案:

答案 0 :(得分:1)

您需要使用此脚本:

"script": {
    "inline": "ctx._source.universities.state.add(new_state)",
    "params": {
      "new_state": {
          "Text": "Seattle",
          "country": "us",
          "code": 5695
      }
    }
  }
}