我有两个不同的批量上传要执行,每一个都会发生的顺序是完全不可预测的,在一个加载中,我会有以下字段: SERVER_NAME
, OS
,和 PROD_1_VERSION
在另一种情况下,我会有如下字段: SERVER_NAME
, OS
,和 PROD_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" }
如果我按照给定的顺序加载 "index"
财产 "PROD_2_VERSION"
将被添加,但是 "PROD_1_VERSION"
就会迷失方向
如果我修改它,并使用 "update"
而不是 "index"
(包括 { "doc" : ... }
在属性之前,第一次加载失败,因为它试图更新尚不存在的内容
如果第一次装载 "index"
第二个是 "update"
然而,正如前面所提到的,它是有效的,每种情况发生的顺序是无法控制的。
有没有办法让它像这样工作:
if record exit,
use behave like 'index'
else
behave like 'update'
???
1条答案
按热度按时间aemubtdh1#
我不确定是否完全理解您的用例。但要在ElasticSearch中批量执行“upsert”(插入或更新),必须添加
在你的医生部分之后。
以下是elasticsearch官方文档的示例: