gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:13:16 27 4
gpt4 key购买 nike

我要执行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" }
  • 如果我按照给定的顺序进行加载,并使用"index",将添加"PROD_2_VERSION"属性,但是"PROD_1_VERSION"将丢失
  • 如果我对其进行修改,并使用"update"而不是"index"(在properties之前包括{ "doc" : ... }),则第一次加载失败,因为它尝试更新
  • 尚不存在的内容
  • 如果第一个加载具有"index",第二个加载具有"update",则它可以工作,但是,如上所述,无法控制每次加载的顺序。

  • 有没有办法使它像这样工作:
    if record exit, 
    use behave like 'index'
    else
    behave like 'update'
    ???

    最佳答案

    我不确定是否完全了解您的用例。但是要在 Elasticsearch 中批量“插入”(插入或更新),您必须添加

    "doc_as_upsert" : true 
    在您的文档部分之后。
    这是 official elasticsearch's documentation的示例:
    { "update" : {"_id" : "2", "_index" : "index1", "retry_on_conflict" : 3} }
    { "doc" : {"field" : "value"}, "doc_as_upsert" : true }

    关于elasticsearch - 弹性-批量上传:索引x更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64147479/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com