elasticsearch,Nest,elasticsearch" /> elasticsearch,Nest,elasticsearch" />

Nest 当文档存在时,批量将文档插入ElasticSearch而不进行更新

Nest 当文档存在时,批量将文档插入ElasticSearch而不进行更新,nest,elasticsearch,Nest,elasticsearch,如果存在Id,是否可以在不更新文档内容的情况下将数据批量插入ES。只插入现有文档,不进行任何更新。是,使用批量创建: POST /my_index/my_type/_bulk {"create":{"_id":1}} {"foo":1,"bar":"y"} {"create":{"_id":6}} {"foo":1,"bar":"y"} 上述请求针对的是已经存在的文档1和不存在的文档6。该请求的输出为: "items": [ { "create": {

如果存在Id,是否可以在不更新文档内容的情况下将数据批量插入ES。只插入现有文档,不进行任何更新。

是,使用批量
创建

POST /my_index/my_type/_bulk
{"create":{"_id":1}}
{"foo":1,"bar":"y"}
{"create":{"_id":6}}
{"foo":1,"bar":"y"}
上述请求针对的是已经存在的文档1和不存在的文档6。该请求的输出为:

"items": [
      {
         "create": {
            "_index": "my_index",
            "_type": "my_type",
            "_id": "1",
            "status": 409,
            "error": "DocumentAlreadyExistsException[[my_index][2] [my_type][1]: document already exists]"
         }
      },
      {
         "create": {
            "_index": "my_index",
            "_type": "my_type",
            "_id": "6",
            "_version": 1,
            "status": 201
         }
      }
   ]

它可以工作,但我改变了逻辑,从ES(插入的文档ID)和bulk.Index(op=>op.document(myDoc))中获取一些状态,以获得更轻的请求和响应,而不会出现错误消息(409)。谢谢你的回答。@marcinn你能分享一下你是如何做到的吗?您是否检查了文档是否存在于索引设置中?@BenChiciudean我已将项目切换到sql。。。我无法使用elastic找到旧的回购协议,因此我无法帮助您。在我的情况下,最好(更快)获取ES中已经存在的文档ID,并使用批量索引来表示不存在(而不是批量创建)。