gpt4 book ai didi

elasticsearch - Elasticsearch -更新特定的嵌套对象

转载 作者:行者123 更新时间:2023-12-02 22:54:47 28 4
gpt4 key购买 nike

我有酒店文件,每个文件都有嵌套类型的房间。

{
id: hotel_id,
rooms: [
{
id: room_id_1,
name: "room 1 name"
},
{
id: room_id_2,
name: "room 2 name"
},
....
]
}

我只想更新特定房间中的单个字段。我正在尝试使用Update api,从ID为1的酒店文档中更新ID为2的房间:
POST hotels/_update/1
{
"script" : {
"source" : "if(ctx._source.rooms.id == 2) { ctx._source.rooms.name = params.new_name }",
"lang" : "painless",
"params" : {
"new_name" : "new room name"
}
}
}

我从ES收到此错误“非法列表快捷方式值[id]”。

谢谢!

最佳答案

您需要像这样循环遍历rooms:

POST hotels/_update/1
{
"script" : {
"source" : "for (int i=0; i < ctx._source.rooms.length; i++) {if(ctx._source.rooms[i].id == 2) { ctx._source.rooms[i].name = params.new_name; break } }",
"lang" : "painless",
"params" : {
"new_name" : "new room name"
}
}
}

关于elasticsearch - Elasticsearch -更新特定的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58659527/

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