【问题标题】:Check the status of updateRequest in ElasticSearch in Java在 Java 中检查 ElasticSearch 中 updateRequest 的状态
【发布时间】:2017-04-12 03:06:33
【问题描述】:

使用弹性搜索的索引允许检查响应的状态:

import static org.elasticsearch.common.xcontent.XContentFactory.*;

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
        .setSource(jsonBuilder()
                    .startObject()
                        .field("user", "kimchy")
                        .field("postDate", new Date())
                        .field("message", "trying out Elasticsearch")
                    .endObject()
                  )
        .get();

// status has stored current instance statement.
RestStatus status = response.status();

当我需要 upsert 并使用 updateRequest 而不是响应时,是否有等效于 status 的方法?

IndexRequest indexRequest = new IndexRequest("index", "type", "1")
        .source(jsonBuilder()
            .startObject()
                .field("name", "Joe Smith")
                .field("gender", "male")
            .endObject());
UpdateRequest updateRequest = new UpdateRequest("index", "type", "1")
        .doc(jsonBuilder()
            .startObject()
                .field("gender", "male")
            .endObject())
        .upsert(indexRequest);              
client.update(updateRequest).get();

谢谢。

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    最简单的方法是检查成功、失败或总操作的数量。

    例如,如果要使用的方法是getTotal(),

    与其使用 get(),不如使用 actionGet() 获取包含操作数(包括总操作数)的 UpdateResponse。

    把它们放在一起:

    client.update(updateRequest).actionGet().getShardInfo().getTotal();
    

    对于其他操作,只需将 getTotal() 更改为您想要的。

    结果是int中的操作数。

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 2015-04-26
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2023-03-23
      • 2010-09-23
      相关资源
      最近更新 更多