【问题标题】:How to bulk update a single field in elasticsearch using python如何使用python批量更新elasticsearch中的单个字段
【发布时间】:2020-12-09 13:27:29
【问题描述】:

如何在弹性搜索中执行单字段批量更新。目前,我正在尝试如下辅助函数,

from elasticsearch import Elasticsearch, helpers
for doc in collection_1:

   try:
       uid = int(doc["uid"])
       k.append({
                "_index": "col1",
                "_type" : "col1",
                "_id"   : uid,
                "_source": doc
            })
    except Exception as err:
       print(err)

helpers.bulk(es, k)

E.S 版本:2.4

【问题讨论】:

  • 默认情况下,如果具有相同 _id 的文档已经存在,elasticsearch 将替换 _source 中的任何内容。
  • @GarbageCollector。在更新时间时,我只有更新的字段值和 id。我不会得到所有的值
  • 检查this问题

标签: python elasticsearch


【解决方案1】:

请显示您的导入和您的 Elasticsearch 版本。此外,您的代码缺少对 collection1 变量的引用。如果你想使用批量助手,你应该遵循python bulk helpers documentation中描述的语法。

您应在正文中指定一个字段_op_type,并将其设置为update,然后传递您的部分文档。

【讨论】:

    【解决方案2】:

    您可以使用脚本来更新仅需要的字段而不是所有 _source 文档

    "script": {
        "source": "ctx._source.datetime2=new Date((long)(ctx._source.creationDate+12600000));"
        ,"lang": "painless"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2021-03-14
      • 2016-05-12
      • 2018-10-13
      • 2023-04-02
      • 2015-07-19
      • 1970-01-01
      相关资源
      最近更新 更多