我在python中使用这段代码来更新elasticsearch中的文档。它工作正常,但很难将其用于数百万个文档,因为我必须每次初始化id
值来更新每个文档。Elastisearch通过查询更新
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
Note that as of this writing, updates can only be performed on a single document at a time. In the future, Elasticsearch might provide the ability to update multiple documents given a query condition (like an SQL UPDATE-WHERE statement).
我很确定''update_by_query'获取作为q应该工作的参数。只需检查此python http://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.update_by_query – christinabo
你好AhmyOhlin,欢迎来到该网站。我编辑了您的问题以匹配本网站上其他问题的格式,请随时再次编辑它。 – MackM
@christinabo 我想将设备的值从'Boiler'更改为'Test'。 我使用参数q ='设备:“锅炉”'更新所有文档的值'锅炉',但我得到以下错误: TypeError:更新()有一个意想不到的关键字参数'q' 这是我的代码 'elasticsearch.update(index ='testindex',doc_type ='AAA',q ='Device:“Boiler”', body = {'doc':{'Device':'TESTs'} }' – AhmyOhlin