elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 弹性搜索6.2以前版本的尺寸[0]参数的备选方案

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]

在早期版本的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]
那么,另一种方法是什么呢。我是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。