我使用 ElasticSearch 2.3.3。现在我需要更新索引中文档中的许多数组之一。这是 ElasticSearch 中文档的一部分:
"sizes": [
{
"characteristicId": 11154209,
"localized": [
{
"country": "kz",
"price": 19580,
"priceWithSale": 15460,
"quantity": 6
},
{
"country": "ru",
"price": 3660,
"priceWithSale": 2891,
"quantity": 6
}
],
"typeId": 0,
"sizeName": "35",
"wbSize": {
"id": 19,
"value": "35"
},
"techSize": {
"id": 58,
"value": "35"
}
}
]
我尝试在 Java-API 上使用“通过合并文档更新”功能,如下所示:
updateRequest = new UpdateRequest();
updateRequest.index("index)";
updateRequest.type("type");
updateRequest.id("2148069");
updateRequest.doc(XContentFactory.jsonBuilder()
.startObject()
.startArray("sizes")
.startObject()
.field("characteristicId", 9099140)
.startArray("localized")
.startObject()
.field("country", "kz")
.field("price", 15)
.field("priceWithSale", 15)
.endObject()
.startObject()
.field("country", "ru")
.field("price", 3)
.field("priceWithSale", 3)
.endObject()
.endArray()
.endObject()
.endArray()
.endObject());
client.update(updateRequest).get();
但这只是重写整个数组,而我需要更新数组中的一些字段。有什么办法吗?