Nest 当文档存在时,批量将文档插入ElasticSearch而不进行更新
如果存在Id,是否可以在不更新文档内容的情况下将数据批量插入ES。只插入现有文档,不进行任何更新。是,使用批量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": {
创建
:
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,并使用批量索引来表示不存在(而不是批量创建)。