gpt4 book ai didi

elasticsearch - 如果文档尚不存在,我可以使用更新 API 创建文档吗

转载 作者:行者123 更新时间:2023-11-29 02:43:37 25 4
gpt4 key购买 nike

我有一个非常简单的问题:

我想将多个文档更新到 elasticsearch。有时文档已经存在,但有时不存在。我不想使用获取请求来检查文档是否存在(这会降低我的性能)。如果文档尚不存在,我想直接使用我的更新请求来直接索引文档。

我知道我们可以在更新文档时使用 upsert 创建一个不存在的字段,但这不是我想要的。如果文档不存在,我想为其编制索引。我不知道 upsert 是否可以做到这一点。

你能给我一些解释吗?

提前致谢!

最佳答案

这可以使用更新 api 来实现。它确实需要您定义每个文档的 ID,因为更新 API 需要文档的 ID 来确定其存在。

给定一个使用以下文档创建的索引:

PUT /cars/car/1 
{ "color": "blue", "brand": "mercedes" }
PUT /cars/car/2
{ "color": "blue", "brand": "toyota" }

我们可以通过以下 API 调用使用更新 API 获得您想要的更新插入功能。

POST /cars/car/3/_update
{
"doc": {
"color" : "brown",
"brand" : "ford"
},
"doc_as_upsert" : true
}

此 api 调用会将文档添加到索引中,因为它不存在。

更改汽车颜色后再次运行调用,将更新文档,而不是创建新文档。

POST /cars/car/3/_update
{
"doc": {
"color" : "black",
"brand" : "ford"
},
"doc_as_upsert" : true
}

关于elasticsearch - 如果文档尚不存在,我可以使用更新 API 创建文档吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034605/

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