Elasticsearch-完全插入或部分更新

时间:2018-07-27 13:11:43

标签: 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"} }

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

感谢您的回答!

1 个答案:

答案 0 :(得分:0)

最终由我自己找到解决方案

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”创建道具 one 两个。否则,它只是将一个设置为“ 13”

的更新