我在弹性搜索中使用脚本时遇到问题,我有一个存储地图字段的文档,我想使用scirpt部分更新文档,对于普通字段,我可以使用参数传递值,但我不会'知道如何通过params更新map字段,这种情况有什么解决方案吗? 提前感谢您的回复。
例如,我有文档:{
"_index": "tour-1",
"_type": "product",
"_id": "5587375",
"_version": 1033,
"found": true,
"_source": {
"active": 1,
"departurePrices": {
"1": {
"minPrice": 1000,
"tradePrice": 800
},
"2": {
"minPrice": 2000,
"tradePrice": 2500
}
}
}
}
对于活动字段我可以传递类似下面脚本的值,但是departurePrices字段存储为地图,如何通过params来更新departurePrices.1.minPrice和departurePrices.1.tradePrice?的值? / p>
POST tour-1/product/5587375/_update
{
"script" : {
"inline": "ctx._source.active=params.active;",
"lang": "painless",
"params" : {
"active" :1
}
}
}
答案 0 :(得分:0)
您可以尝试这样:
POST tour-1/product/5587375/_update
{
"script" : {
"inline": "ctx._source.departurePrices[params.mapKey] = params.mapValues;",
"lang": "painless",
"params" : {
"mapKey": "1",
"mapValues": {
"minPrice": 990,
"tradePrice": 850
}
}
}
}