gpt4 book ai didi

java - Elasticsearch 在 Java 中使用 Scroll api

转载 作者:行者123 更新时间:2023-11-29 08:27:32 24 4
gpt4 key购买 nike

我试着用这里的例子: 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com