我试着用这个例子: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
,但在本教程中它是应该的。
蚂蚁想法有什么问题?
elasticsearch 6中有两个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
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中的文本