我正在尝试接受JSON块,以便它完全覆盖Elasticsearch记录。在我看来,更新会添加新密钥(如果它们不存在),或者覆盖它们,但是它不会删除更新中未包含的密钥。
我的用户将发送旧版_source
字段的已编辑JSON,因此最简单的更新方法是删除旧的_source
并使用新的JSON作为全新的{{1} }。我到目前为止:
_source
也无法删除密钥以查看我是否可以执行此操作:
from elasticsearch import Elasticsearch
ES = Elasticsearch()
ES.update(index=ELASTIC_INDEX_NAME, doc_type=ELASTIC_EVENT_DOC_TYPE_NAME, id="44", body={"script": {"source": "ctx.op = 'delete'", "lang": "painless"}})
TransportError: TransportError(500, u'script_parse_exception', u'unexpected field [source]')
有没有办法用新的JSON文档完全覆盖Elasticsearch文档?