本文介绍了用python进行elasticsearch部分更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下格式的elasticsearch文档。我需要部分更新 x字段,并在其中添加一个python dict。
I have a elasticsearch document in the following format. I need to partial update the "x" field and add a python dict in it.
{
"_index": "gdata34",
"_type": "gdat",
"_id": "328091-72341-118",
"_version": 1,
"_score": 1,
"_source": {
"d": {
"Thursday": {
"s": ""
},
"Email": {
"s": ""
},
"Country": {
"s": "US"
},
},
"x": {
"Geo": {
"s": "45.335428,-118.057133",
"g": [
-118.057133
,
45.335428
]
}
},
}
}
我尝试了以下代码进行更新:
I tried the following code to update:
from elasticsearch import Elasticsearch, exceptions
import pprint
elasticsearch = Elasticsearch()
doc = elasticsearch.get(index='gdata34', doc_type='gdat', id='328091-72341-7')
elasticsearch.update(index='gdata34', doc_type='gdat', id='328091-72341-7',
body={"script":"ctx._source.x += y",
"params":{"y":"z"}
}
)
elasticsearch.indices.refresh(index='gdata34')
new_doc = elasticsearch.get(index='gdata34', doc_type='gdat', id='328091-72341-7')
我收到此错误:
elasticsearch.exceptions.RequestError: TransportError(400, u'ElasticsearchIllegalArgumentException[failed to execute script]; nested: ScriptException[dynamic scripting for [groovy] disabled]; ')
使用python在Elasticsearch中进行部分更新的正确方法是什么?
What is the right way to do partial update in elasticsearch using python?
推荐答案
供以后参考,以下部分更新方法有效。
For future reference, the following method of partial update worked.
elasticsearch.update(index='gdata34', doc_type='gdat', id='328091-72341-7',
body={
'doc': {'x': {'y':'z'}}
}
)
这篇关于用python进行elasticsearch部分更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!