批量更新后,Multi get返回源为null

时间:2013-08-27 12:52:02

标签: elasticsearch

我在批量更新后使用弹性搜索multi get来阅读文档。它将一些文档源返回为null。

 MultiGetRequestBuilder builder = client.prepareMultiGet();

 builder.setRefresh(true);

 builder.add(indexName, type, idsList);

 MultiGetResponse multiResponse = builder.execute().actionGet();

 for (MultiGetItemResponse response : multiResponse.getResponses())
 {
         String customerJson = response.getResponse().getSourceAsString();
         System.out.println("customerJson::" + customerJson);
 }

我的代码中有任何问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

当你说“某些返回源为null”时,我假设get响应将它们标记为不存在..?

如果是这样,那么可能:

  1. 批量中的某些索引请求无法映射/随机错误。

  2. 您需要在索引编制和多重编辑之间刷新索引(即:您的文档尚不可用于搜索)

    transportClient.admin()索引()prepareRefresh(指数).execute();

  3. 祝你好运

    编辑:你在评论中回答了你自己的问题,但为了便于阅读:当使用get或multiget时,如果索引时使用了路由键,则必须在get期间再次指定,否则,确定错误的分片使用默认路由并且get失败。