elasticsearch elasticsearch中是否有批量部分更新?,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch elasticsearch中是否有批量部分更新?,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch elasticsearch中是否有批量部分更新?

elasticsearch elasticsearch中是否有批量部分更新?,elasticsearch,nest,elasticsearch,Nest,我有一个50个属性的elasticsearch模型,我正在将数据传输到elasticsearch。然而,我的elasticsearch别名中大约有150000个文档,我想通过批量部分更新来更新这些文档的3个属性。我知道批量更新和部分更新是分开的,但是elasticsearch中有部分批量更新吗?您可以使用批量API发送部分更新。这里有一个例子 private static void Main() { var defaultIndex=“文档”; 变量池=新的SingleNodeConnectio

我有一个50个属性的elasticsearch模型,我正在将数据传输到elasticsearch。然而,我的elasticsearch别名中大约有150000个文档,我想通过批量部分更新来更新这些文档的3个属性。我知道批量更新和部分更新是分开的,但是elasticsearch中有部分批量更新吗?

您可以使用批量API发送部分更新。这里有一个例子

private static void Main()
{
var defaultIndex=“文档”;
变量池=新的SingleNodeConnectionPool(新Uri(“http://localhost:9200"));
var设置=新连接设置(池)
.DefaultIndex(默认索引);
var客户端=新的ElasticClient(设置);
if(client.indexists(defaultIndex.Exists)
client.DeleteIndex(defaultIndex);
var docs=Enumerable.Range(1,10)。选择(i=>newmydocument(i)
{
Message=$“Message{i}”
});
//对文件进行批量索引
var bulkResponse=client.Bulk(b=>b
.IndexMany(文档)
.Refresh(Refresh.WaitFor)
);
var searchResponse=client.Search(s=>s
.Sort(so=>so.升序(“\u id”))
);
//更新文件
bulkResponse=client.Bulk(b=>b
.UpdateMany(文档,(业务单元,文档)=>
{
如果(文档Id%3==0)
{
//使用脚本更新
bu.Id(doc.Id).Script(s=>s
.Source(“ctx.\u Source.message='message'+(Integer.parseInt(ctx.\u id)*2);”)
);
}
否则如果(doc.Id%2==0)
{
//使用部分文档进行更新
bu.Id(doc.Id).doc(新的{message=“updated message”});
}
其他的
{
//发送原始文档以进行更新
bu.Doc(Doc);
}
返回bu;
})
.Refresh(Refresh.WaitFor)
);
searchResponse=client.Search(s=>s
.Sort(so=>so.升序(“\u id”))
);    
}
公共类MyDocument
{
公共MyDocument(int id)=>id=id;
公共int Id{get;set;}
公共字符串消息{get;set;}
}
最终搜索响应返回

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 10,
    "max_score" : null,
    "hits" : [
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "1",
        "_score" : null,
        "_source" : {
          "id" : 1,
          "message" : "message 1"
        },
        "sort" : [
          "1"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "10",
        "_score" : null,
        "_source" : {
          "id" : 10,
          "message" : "updated message"
        },
        "sort" : [
          "10"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "2",
        "_score" : null,
        "_source" : {
          "id" : 2,
          "message" : "updated message"
        },
        "sort" : [
          "2"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "3",
        "_score" : null,
        "_source" : {
          "id" : 3,
          "message" : "message 6"
        },
        "sort" : [
          "3"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "4",
        "_score" : null,
        "_source" : {
          "id" : 4,
          "message" : "updated message"
        },
        "sort" : [
          "4"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "5",
        "_score" : null,
        "_source" : {
          "id" : 5,
          "message" : "message 5"
        },
        "sort" : [
          "5"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "6",
        "_score" : null,
        "_source" : {
          "id" : 6,
          "message" : "message 12"
        },
        "sort" : [
          "6"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "7",
        "_score" : null,
        "_source" : {
          "id" : 7,
          "message" : "message 7"
        },
        "sort" : [
          "7"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "8",
        "_score" : null,
        "_source" : {
          "id" : 8,
          "message" : "updated message"
        },
        "sort" : [
          "8"
        ]
      },
      {
        "_index" : "documents",
        "_type" : "mydocument",
        "_id" : "9",
        "_score" : null,
        "_source" : {
          "id" : 9,
          "message" : "message 18"
        },
        "sort" : [
          "9"
        ]
      }
    ]
  }
}
请注意,源文档已更新

  • id可被3整除的文档已使用脚本更新更新文档
  • id可被2整除的
    \u文档已使用部分更新更新文档
  • 通过传递原始文件更新剩余文件;这导致批量响应中出现
    noop

  • 请确保:这3个值不能基于静态值或现有字段编写脚本,因此您需要发送每个文档的实际值?此答案可能会有所帮助:(请参阅答案底部的最后一个批量命令)非常感谢,它非常有用,解决了我的问题