如何解决弹性-批量上传:索引x更新
我要执行2个不同的批量上传,每次上传的顺序都是完全无法预测的
在一次加载中,我将拥有以下字段:Sources/SwiftFusion/Core/FixedShapeTensor.swift
,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","PROD_2_VERSION":"6.0.0.5" } {"index":{"_index" : "myindex","PROD_2_VERSION":"7.0.0.0" } {"index":{"_index" : "myindex","PROD_2_VERSION":"8.5.0.1" }
,则将添加属性"index"
,但"PROD_2_VERSION"
将丢失 - 如果我修改它,并使用
"PROD_1_VERSION"
而不是"update"
(在属性之前包含"index"
),则第一次加载失败,因为它尝试更新尚不存在的内容 - 如果第一个负载具有
{ "doc" : ... }
,而第二个负载具有"index"
,则如上所述,该负载将无法控制。
有没有办法使它像这样工作:
"update"
???
解决方法
我不确定您是否完全了解您的用例。但是要在弹性搜索中批量“插入”(插入或更新),您必须添加
"doc_as_upsert" : true
在您的文档部分之后。
以下是official elasticsearch's documentation的示例:
{ "update" : {"_id" : "2","_index" : "index1","retry_on_conflict" : 3} }
{ "doc" : {"field" : "value"},"doc_as_upsert" : true }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。