弹性搜索6.2替代先前版本的size [0]参数

时间:2018-09-04 04:51:38

标签: java elasticsearch

在早期版本的ES中,当我们不知道特定查询的聚合结果的预期大小时,我们传递了size: 0。但是在ES 6.2.x版本中,无法将参数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中执行第二个选项。任何帮助都会很棒。谢谢。

编辑
我当前正在使用的查询,因为未设置size参数,它仅返回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);

0 个答案:

没有答案