首页 > 解决方案 > Elasticsearch - 完全插入或部分更新

问题描述

在我的 ELS 中,我有一个具有这种结构的索引:

_index  "idx"
_type   "ref"
_id "HgyiDUIfiuD"
_source 
    one "24"
    two "45"
    three "OK"

如果_id不存在,我想插入或更新(我自己设置_id)。但是当我更新时,我想更新除三个之外的所有属性。

我试试这个,但所有属性都更新了..

http://example.com:9200/_bulk

{ "update" : {"_id" : "Cr2LjmQB1KXPTyNjT1hT", "_type" : "ref", "_index" : "idx"} }
{ "doc" : {"one" : "24", "two" : "24", "three" : "OK"} }

我尝试使用“脚本”对象但没有成功..

感谢您的回答!

标签: elasticsearch

解决方案


终于自己找到了解决方案

http://example.com:9200/_bulk

{"update":{"_index":"idx","_type":"ref","_id":"HgyiDUIfiuD"}}
{"script" : { "source": "ctx._source.one = params.one", "params": {"one" : "13"},  "lang" : "painless"}, "upsert" : {"one" : "13", "two" : "NEW"}}

在这里,如果它是一个创作,则使用值“13”和“NEW”创建道具二。否则,它只是一个设置为“13”的更新


推荐阅读