java - Elasticsearch 在 Java 中使用 Scroll api

标签 java elasticsearch

我试着用这里的例子: https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html

关于如何在 elasticsearch 中使用 java 滚动。 这是代码:

QueryBuilder qb = termQuery("multi", "test");

SearchResponse scrollResp = client.prepareSearch("test")
        .addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC)
        .setScroll(new TimeValue(60000))
        .setQuery(qb)
        .setSize(100).get(); //max of 100 hits will be returned for each scroll
//Scroll until no hits are returned
do {
for (SearchHit hit : scrollResp.getHits().getHits()) {
    //Handle the hit...
}

scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet();
} while(scrollResp.getHits().getHits().length != 0); // Zero hits mark the end of the scroll and the while loop.

虽然出于某些原因我有一个错误提示 The method prepareSearch(String) is undefined for the type RestHighLevelClient。 我的 client 变量确实是 RestHighLevelClient 但在教程中它应该是什么。

Ant 的思路是什么问题?

最佳答案

RestHighLevelClient 的工作方式与 TransportClient 不同。

如果您希望将滚动与 RestHighLevelClient 一起使用,则必须遵循以下步骤:

  1. 创建 SearchRequest :

    SearchRequest request = new SearchRequest("test").scroll(new TimeValue(60000)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(qb); searchSourceBuilder.sort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC); request.source(searchSourceBuilder);

  2. 执行第一个搜索:

    SearchResponse scrollResp = client.search(sreq);

这里的客户端是RestHighLevelClient。

  1. 对于后续的滚动搜索,创建一个 SearchScrollRequest,然后将其用于滚动:

    scrollResp = client.searchScroll(new SearchScrollRequest(scrollResponse.getScrollId()).scroll(new TimeValue(60000)));

有关更多信息,请参阅:Search Scroll API

关于java - Elasticsearch 在 Java 中使用 Scroll api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377314/

相关文章:

node.js - 如何让 Elasticsearch 与 MongoDb 和 node.js 一起玩?

elasticsearch - 在字符串和数字字段上请求时的Elasticsearch java.lang.NumberFormatExcepion

elasticsearch - Elasticsearch过滤器未过滤

elasticsearch - 如何对 Elasticsearch 5.3 查询请求进行统计?

ruby-on-rails - Heroku上的Searchkick无法正常工作

java - 如何从 docker compose 设置带有点的属性名称?

java - 如何停止在 java.util.Timer 类中安排的任务

java - vim 在 java 注释后缩进

java - 在PC上序列化,在android手机上反序列化?

java - 无法使用 text/html 将文本添加到 JEditorPane