当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch在Java中使用Scroll api

穆飞龙
2023-03-14

我试着用这个例子: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.

尽管由于某些原因,我有一个错误,它表示RestHighLevelClient类型的方法prepareSearch(String)未定义。我的client变量确实是RestHighLevelClient,但在本教程中它是应该的。

蚂蚁想法有什么问题?

共有2个答案

寿嘉悦
2023-03-14

elasticsearch 6中有两个API

  1. 一个是Rest Api
  2. 一个是运输api。

错误表示您使用了REST Api的客户端和传输Api的代码。

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

但如果您使用REST api,这将是有益的,因为elasticsearch将在将来删除传输api。

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

万英武
2023-03-14

RestHighLevelClient的工作方式与TransportClient不同。

1)创建搜索请求:

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) 对于后续滚动搜索,请创建SearchScroll请求,然后将其用于滚动:

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

有关更多信息,请参阅:搜索滚动API

 类似资料:
  • 问题内容: 我正在研究Elastic-Search v1.1.1,我遇到了搜索查询问题。我想知道如何解决以下障碍 这是我的地图 索引记录中的数据是 我的搜索是 我想要记录的完全匹配,可以使用该查询来获取记录的完全匹配 我用queryString()检查了一下,然后确定了它对于精确匹配没有用 请建议我 问题答案: 您可以在字符串两边加上引号以进行完全匹配: 如果您不想在上述字符串索引上进行部分匹配,

  • 我想使用Java API用一个特定的字段更新一些索引数据。我参考了这个文档https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html,并创建了一个java程序。我的Java程序如下所示:

  • 问题内容: 我目前正在使用Elasticsearch V2.3.1。我想在Java中使用以下Elasticsearch查询。 上面的查询搜索名为“ kimchy”的“用户”,并使用给定值更新“列表”字段。该查询同时更新多个文档。我在https://www.elastic.co/guide/en/elasticsearch/client/java- api/2.3/java-docs- update

  • 问题内容: 我当前正在使用Elasticsearch V2.3.1。我想在Java中使用以下Elasticsearch查询。 上面的查询搜索名为“ kimchy”的“用户”,并使用给定值更新“列表”字段。该查询同时更新多个文档。我在https://www.elastic.co/guide/en/elasticsearch/client/java- api/2.3/java-docs- update

  • 问题内容: 我遍历了许多博客和网站,了解如何配置Elasticsearch for MongoDB来索引MongoDB中的集合,但是它们都不是直接的。 请向我说明逐步安装Elasticsearch的过程,其中应包括: 组态 在浏览器中运行 我将Node.js与express.js结合使用,因此请相应地提供帮助。 问题答案: 这个答案应该足以使您开始按照本教程使用MongoDB,Elasticsea

  • 问题内容: 我使用Elasticsearch 1.7.4及其Java API。目前,我想按用户计数前10个高频搜索词。因此,我必须记录要搜索的用户类型的查询文本的单词,并且在记录单词之前必须分析查询文本。如链接所示,我找到了分析文本的宁静方法,但是在TransportClient中找不到api。 有谁知道如何使用Java api或其他方式而不是请求静态API来分析Elasticsearch中的文本