Скопируйте карту в запрос обновления документа Elastic Search

Я хотел бы добавить набор пар ключ-значение из HashMap в тело запроса функции UpdateRequest в клиентском API REST Java высокого уровня для эластичного поиска.

Я могу успешно пройти через HashMap и извлечь ключи и значения. Как я могу добавить их в конструктор простым и эффективным способом? В

обновлено: новая дата (), животное: крокодил

code - это заполнитель того, чего я хотел бы достичь с нашими реальными данными из HashMap.

Вот документация, которую я использовал из Elastic Search. Мы используем версию 7.5.2.

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-update.html

public void updateDocument(@PathParam("index_name") String index_name,
        @PathParam("document_id") String document_id, HashMap<String, String> columnValues) throws IOException {
    RestHighLevelClient client = createHighLevelRestClient();
    Set<String> keys = columnValues.keySet();
    for (String key : keys) {
        System.out.println(key);
        System.out.println(columnValues.get(key));
    }
    XContentBuilder builder = XContentFactory.jsonBuilder();
    builder.startObject();
    {
        builder.timeField("updated", new Date());
        builder.field("animal", "crocodile");
    }
    builder.endObject();
    UpdateRequest request = new UpdateRequest(
            index_name, document_id);
    request.docAsUpsert(true).doc(builder);
    UpdateResponse updateResponse = client.update(
            request, RequestOptions.DEFAULT);
    System.out.println(updateResponse);
    client.close();

1 ответ

Это работает...

        XContentBuilder builder = XContentFactory.jsonBuilder();
    builder.startObject();
    for (String key : keys) {
        System.out.println(key);
        System.out.println(columnValues.get(key));
        builder.field(key, columnValues.get(key));
    }
    builder.endObject();
Другие вопросы по тегам