ElasticSearch 2.3.3 を使用しています。ここで、インデックス内のドキュメント内の多くの配列の 1 つを更新する必要があります。これは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();
しかし、配列内のいくつかのフィールドを更新する必要がある間、配列全体を書き換えるだけです。何か方法はありますか?