在es的早期版本中,当我们不知道特定查询的预期结果大小时
size: 0
. 但是在ES 6.2 .x版本中,PARAM
size
无法设置为0(零),它引发以下异常:
java.lang.IllegalArgumentException: [size] must be greater than 0.
那么另一种方法是什么呢?我是ES的初学者。我在网上做了一些搜索,发现用
scroll
而这
solution at SO
. 我尝试过滚动选项,但我想我做错了一些事情,出现了以下异常:
org.elasticsearch.search.SearchContextMissingException: No search context found for id [1578]
我不知道如何在java中实现第二个选项。任何帮助都会很好的。谢谢。
编辑
查询我当前使用的,因为大小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);