elasticsearch - 如何使用 elasticsearch-py 附加到 Elasticsearch 中的数组

标签 elasticsearch elasticsearch-py

使用官方 ElasticSearch Python library ( Docs )

我创建一个索引:

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()
                }
               }
          })

我必须在第二个代码片段中更改什么才能将其附加到历史记录数组/列表中,而不是每次都覆盖它?

最佳答案

您可以使用 scripted updates在 Elasticsearch 中。要附加到数组,请尝试以下操作:

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

关于elasticsearch - 如何使用 elasticsearch-py 附加到 Elasticsearch 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51384829/

相关文章:

python - Elasticsearch延迟存储并立即搜索

sorting - Elasticsearch 没有对结果进行排序

elasticsearch - Elasticsearch:要备份哪些索引?

elasticsearch - 整个字段长度归一化搜索

elasticsearch - Logstash Grok 自定义 URIPATHPARAM

elasticsearch - 如何过滤查询之类的范围中的存在项?

elasticsearch - 如果没有特殊字符, “match”和 “simple_query_string”之间有区别吗?

ruby-on-rails - 更改has_many模型时的Rails Elasticsearch重新索引文档

python - 使用python将日志文件上传到elasticsearch

python - python elasticsearch:如何在所有字段上查询字符串