如何使用elasticsearch-py在Elasticsearch中追加数组

时间:2018-07-17 15:09:48

标签: elasticsearch elasticsearch-py

使用官方MVI by Hans DorfmannElasticSearch Python library

我创建一个索引:

doc = {
    "something": "123a",
    "somethingelse": "456b",
    "timestamp": datetime.now(),
    "history": []
}
es.index(index="someindex", doc_type="somedoctype", id="someid", body=doc)

我想每次都在历史记录中添加项目,而不是覆盖它们:

es.update(index="someindex", doc_type="somedoctype", id="someid",
          body={"doc": {
                "history": {
                    "123abc": "abc", "456def": "def", "timestamp": datetime.now()
                }
               }
          })

我必须在第二个代码段中进行哪些更改,以使其附加到历史记录数组/列表中,而不是每次都覆盖它?

1 个答案:

答案 0 :(得分:0)

您可以在Elasticsearch中使用scripted updates。对于追加到数组,请尝试如下操作:

es.update(index="someindex", doc_type="somedoctype", id="someid",
      body={
         "script" : {
             "source": "ctx._source.history.addAll(params.history)",
             "lang": "painless",
             "params" : {
                 "history" : ["item1","item2"]
             }
         }
      })