弹性 - 批量上传:索引 x 更新

Elastic - Bulk upload: index x update

我有 2 个不同的批量上传要执行,每个上传的顺序完全无法预测 在一次加载中,我将拥有以下字段:SERVER_NAMEOSPROD_1_VERSION 在另一个中,我会有以下字段:SERVER_NAMEOSPROD_2_VERSION

我的文件如下所示:

{"index":{"_index" : "myindex", "_id" : "MY_SERVER_1" }}
{"SERVER_NAME":"MY_SERVER_1","OS":"Ubuntu","PROD_1_VERSION":"1.0.0.5" }
{"index":{"_index" : "myindex", "_id" : "MY_SERVER_2" }}
{"SERVER_NAME":"MY_SERVER_2","OS":"Windows10","PROD_1_VERSION":"2.0.0.0" }
{"index":{"_index" : "myindex", "_id" : "MY_SERVER_3" }}
{"SERVER_NAME":"MY_SERVER_3","OS":"Fedora","PROD_1_VERSION":"2.5.0.1" }

和:

{"index":{"_index" : "myindex", "_id" : "MY_SERVER_1" }}   
{"SERVER_NAME":"MY_SERVER_1","OS":"Ubuntu","PROD_2_VERSION":"6.0.0.5" } 
{"index":{"_index" : "myindex", "_id" : "MY_SERVER_2" }}
{"SERVER_NAME":"MY_SERVER_2","OS":"Windows10","PROD_2_VERSION":"7.0.0.0" } 
{"index":{"_index" : "myindex", "_id" : "MY_SERVER_3" }}
{"SERVER_NAME":"MY_SERVER_3","OS":"Fedora","PROD_2_VERSION":"8.5.0.1" }

有没有办法让它像这样工作:

if record exit, 
   use behave like 'index'
else
   behave like 'update'

???

我不确定是否完全理解您的用例。但是要在弹性搜索中批量执行“upsert”(插入或更新),您必须添加

"doc_as_upsert" : true 

在您的文档部分之后。

这里是official elasticsearch's documentation的例子:

{ "update" : {"_id" : "2", "_index" : "index1", "retry_on_conflict" : 3} }
{ "doc" : {"field" : "value"}, "doc_as_upsert" : true }