【发布时间】:2020-07-15 18:35:50
【问题描述】:
问题:我在使用脚本更新 Elastic Search 中的嵌套对象时遇到问题。 我想更新文档的某些部分,以便达到我想要的结果。
以下是示例代码。
- 我有以下产品映射
PUT products
{
"mappings": {
"properties": {
"category": {
"type": "nested",
"properties": {
"category_code": {
"type": "keyword"
},
"zaiko": {
"type": "integer"
},
"categories": {
"type": "object",
"properties": {
"category_cd": {
"type": "text"
},
"zaiko": {
"type": "integer"
}
}
}
}
}
}
}
}
-
在上面的映射中插入数据,如下所示
POST /products/_doc/1 { "category": [{ "category_code": "201", "ziko": 100, "categories": { "category_code": "20101", "zaiko": 50 } }] } POST /products/_doc/2 { "category": [{ "category_code": "201", "ziko": 100, "categories": { "category_code": "20102", "zaiko": 60 } }]} -
我想更新嵌套类别对象(Zaiko 字段)并使用下面的脚本
POST /products/_update_by_query { "script": { "lang": "painless", "source": """ for (int i=0; i < ctx._source.category.length; i++) { if(ctx._source.category[i].categories.category_code == "20101"){ ctx._source.category[i].categories.zaiko = params.zaiko; } } """, "params": { "zaiko": 10 } }, "query": { "nested": { "path": "category", "query": { "bool": { "must": [ { "match": { "category.categories.category_cd": "20101" } } ] } } } } }
响应这个查询嵌套类别,zaiko 字段没有更新。 谁能建议我,我们如何使用脚本更新 Elastic Search 中的嵌套对象?
【问题讨论】:
标签: elasticsearch nested