代码之家  ›  专栏  ›  技术社区  ›  Diksha

弹性搜索6.2替代以前版本的大小[ 0 ]参数

  •  0
  • Diksha  · 技术社区  · 6 年前

    在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);
    
    0 回复  |  直到 6 年前