Python 如何使用 elasticsearch-py 更新文档?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30598152/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to update a document using elasticsearch-py?
提问by Dan Hook
Does anyone have an example for how to use update? It's documented here, but the documentation is unclear and doesn't include a working example. I've tried the following:
有没有人有如何使用更新的例子?它记录在此处,但文档不清楚并且不包含工作示例。我尝试了以下方法:
coll = Elasticsearch()
coll.update(index='stories-test',doc_type='news',id=hit.meta.id,
body={"stanford": 1, "parsed_sents": parsed })
and I get
我得到
elasticsearch.exceptions.RequestError:
TransportError(400, u'ActionRequestValidationException[Validation Failed: 1: script or doc is missing;]')
I would like to update using a partial doc, but the update method doesn't take any argument named 'doc' or 'document'.
我想使用部分文档进行更新,但更新方法不接受任何名为“doc”或“document”的参数。
采纳答案by Val
You're almost there, you just need to enclose your body inside a "doc" field. The correct way of doing a partial update with elasticsearch-py goes like this:
你快到了,你只需要把你的身体放在一个“文档”字段中。使用 elasticsearch-py 进行部分更新的正确方法如下:
coll = Elasticsearch()
coll.update(index='stories-test',doc_type='news',id=hit.meta.id,
body={"doc": {"stanford": 1, "parsed_sents": parsed }})