1

我使用 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();

但这只是重写整个数组,而我需要更新数组中的一些字段。有什么办法吗?

4

0 回答 0