【发布时间】:2017-07-18 06:40:42
【问题描述】:
我在 python 中使用此代码来更新我在 elasticsearch 中的文档。它工作正常,但很难将它用于数百万个文档,因为我必须每次都初始化 id 值以更新每个文档。
from elasticsearch import Elasticsearch, exceptions
elasticsearch = Elasticsearch()
elasticsearch.update(index='testindex', doc_type='AAA', id='AVpwMmhnpIpyZkmdMQkT',
body={
'doc':{'Device': 'updated'}
}
)
我在 Elasticsearch 文档中读到它尚未包含在内,但是: https://www.elastic.co/guide/en/elasticsearch/reference/current/_updating_documents.html
请注意,在撰写本文时,更新只能在 一次单个文档。未来,Elasticsearch 可能会提供 给定查询条件更新多个文档的能力(例如 SQL UPDATE-WHERE 语句)。
【问题讨论】:
-
我很确定
update_by_query作为参数 q 应该可以工作。只需检查一下 python elasticsearch-py.readthedocs.io/en/master/… -
您好 AhmyOhlin,欢迎来到该网站。我编辑了您的问题以匹配本网站上其他问题的格式,请随时再次编辑。
-
@christinabo 我想将设备的值从“锅炉”更改为“测试”。我使用参数 q ='Device:"Boiler"' 来更新所有值为 'boiler' 的文档,但出现以下错误:TypeError: update() got an unexpected keyword argument 'q' 这是我的代码
elasticsearch.update(index='testindex', doc_type='AAA', q ='Device:"Boiler"', body={ 'doc':{'Device': 'TESTs'} } -
@Blairg23:我的问题是搜索所有包含
Device:"Boiler"'的文档然后更新它我的问题是:我如何在更新帮助操作中使用 q 参数 python 说:q – Lucene 查询中的查询字符串语法我不明白我是如何使用它的,因为没有例子。
标签: python elasticsearch