Java 弹性搜索6.2以前版本的尺寸[0]参数的备选方案
在早期版本的ES中,当我们不知道具有聚合的特定查询结果的预期大小时,我们传递了Java 弹性搜索6.2以前版本的尺寸[0]参数的备选方案,java,elasticsearch,Java,elasticsearch,在早期版本的ES中,当我们不知道具有聚合的特定查询结果的预期大小时,我们传递了size:0。但是在ES 6.2.x版本中,参数size不能设置为0(零),它会引发以下异常: java.lang.IllegalArgumentException: [size] must be greater than 0. org.elasticsearch.search.SearchContextMissingException: No search context found for id [1578]
size:0
。但是在ES 6.2.x版本中,参数size
不能设置为0(零),它会引发以下异常:java.lang.IllegalArgumentException: [size] must be greater than 0.
org.elasticsearch.search.SearchContextMissingException: No search context found for id [1578]
那么,另一种方法是什么呢。我是ES的初学者。我在网上做了一些搜索,发现可以用和这个来做。我尝试了滚动选项,但我认为我做错了什么,出现了以下异常:java.lang.IllegalArgumentException: [size] must be greater than 0.
org.elasticsearch.search.SearchContextMissingException: No search context found for id [1578]
我不知道如何在java中执行第二个选项。任何帮助都会很好。谢谢
编辑我当前使用的查询,由于未设置size param,它只返回10个结果:
QueryBuilder qb= QueryBuilders
.boolQuery()
.must(termQuery("Key", Val));
SearchRequestBuilder requestBuilder = client.prepareSearch()
.setIndices()
.setTypes(getType())
.setScroll(new TimeValue(ES_TIMEOUT_MS))
.setQuery(qb);
//requestBuilder.setFrom(0);
// requestBuilder.setSize(0);
requestBuilder.addAggregation((terms("name").field("name"))
.subAggregation(topHits("top").size(1).fetchSource(new String[]{ "name","numPosts", "timeCreated", "timeLastActivity", "Key", "indexVersion"},null)));
SearchResponse response = requestBuilder.execute().actionGet(ES_TIMEOUT_MS);
你能显示你正在使用的查询吗?是@Val更新了帖子。。只有当你试图将术语聚合的大小设置为0时,才会出现错误消息
[size]必须大于0
,否则在查询上它应该工作得很好。但此查询的总命中率为457,只有10次命中,与本例类似,有一个显示用户总数的链接,单击上面的链接时,将传递查询以获取详细信息。因此,总用户数为457,但点击率仅为10,即下一页上只有10个用户。然后,您可以将大小更改为大于457,您可以设置的大小为10000。