我有这个命令在弹性搜索中不匹配任何数据,我想在它之后插入它。
//localhost:9200/my_index/my_topic/_update_by_query
{
"script": {
"source": "ctx._source.NAME = params.NAME",
"lang": "painless",
"params": {
"NAME": "kevin"
}
},
"query": {
"terms": {
"_id": [
999
]
}
}
}
我尝试使用upsert
,但它返回错误Unknown key for a START_OBJECT in [upsert].
我不想使用update
+doc_as_upsert
,因为我有一个情况,我不会在我的update
查询中发送id
。
我如何插入update_by_query
。谢谢你。
如果弹性搜索不支持。我想我会检查条件是否有id
,并使用indexAPI
创建和update
更新。
_update_by_query
在现有文档上运行包含在现有索引中._update_by_query
所做的是滚动索引中的所有文档(可选地匹配查询),并通过脚本或摄取管道对每个文档执行一些逻辑。
因此,从逻辑上讲,不能创建/删除索引中不存在的数据。Index API将始终覆盖您的文档。Upsert只能与_update
端点结合使用,这可能是您应该做的。