1

我正在使用 Jest Client 从我的 Java 程序中查询 Elasticsearch。一切正常,除了当我添加“大小”参数时它被忽略。Search 的构建和执行如下所示:

Search search = new Search.Builder(query)
    .setSearchType(SearchType.QUERY_THEN_FETCH)
    .addIndex(index)
    .addType(type)
    .setParameter(Parameters.SIZE, 1)
    .build();
jestClient.execute(search);

此查询始终返回 10 个结果,而不是预期的 1 个结果。如果它是相关的,那么只有 5 个分片,所以它不会返回每个分片的结果。

是否有任何特殊原因忽略此参数?当使用“curl -XGET”在命令行上使用相同的参数运行相同的查询时,或者只是将其放入浏览器中时,查询会正确运行,并且考虑大小参数。

4

1 回答 1

1

事实证明,我对 size 参数的工作方式有误解。我相信 Jest在调整查询结果大小时正确处理了它,但我真正感兴趣的是聚合结果。

向我的聚合添加“大小”参数是可行的,如术语聚合文档(复制如下)中所示。

{
    "aggs" : {
        "products" : {
            "terms" : {
                "field" : "product",
                "size" : 5
            }
        }
    }
}
于 2016-04-28T14:54:57.887 回答