繁体   English   中英

Elasticsearch在Java中使用Scroll API

[英]Elasticsearch use Scroll api in Java

我试图在这里使用示例: 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但是在本教程中应该是它。

蚂蚁的想法是什么问题?

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。

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

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

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

在Elasticsearch 6中,有两个API

  1. 一个是Rest Api
  2. 一种是运输API。

错误表示您已使用REST Api和TRANSPORT Api代码的客户端。

您需要使用此客户端Api: https : //www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html

但是,如果您使用REST api,那将是有益的,因为elasticsearch将来会删除TRANSPORT Api。

这是REST Api的滚动请求: https : //www.elastic.co/guide/en/elasticsearch/client/java-rest/6.3/java-rest-high-search-scroll.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM