elasticsearch - 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"} }
我尝试使用“脚本”对象但没有成功..
感谢您的回答!
解决方案
终于自己找到了解决方案
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”的更新
推荐阅读
- node.js - 来自 GitHub 页面的 HTTP“发布”请求失败
- php - 在php中添加十进制年份
- python - 如何使用python对一组数据进行指数曲线拟合?
- google-apps-script - 在 Google 表格的指定表格中运行脚本
- java - 无法连接到 MariaDB (java)
- android - 如何解决 Android 中的“无法解析方法 getAssets()”
- ansible - 稳定 | 条件检查“item.stat.exists”失败
- office365 - 从 Graph API“您没有所需的权限”创建 Planner 计划
- mysql - 为 MySQL 中查询返回的每一行调用一个查询
- c - 用 C 语言制作的字典,但会误导搜索