忽略 Jest 客户端大小参数
Jest Client Size Parameter Ignored
我正在使用 Jest 客户端从我的 Java 程序中查询 Elasticsearch。一切正常,除了当我添加 "size" 参数时它被忽略。搜索的构建和执行是这样的:
Search search = new Search.Builder(query)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.addIndex(index)
.addType(type)
.setParameter(Parameters.SIZE, 1)
.build();
jestClient.execute(search);
此查询总是 returns 10 个结果,而不是预期的 1 个结果。如果相关,则只有 5 个分片,因此它不会为每个分片返回一个结果。
这个参数被忽略有什么特别的原因吗?当 运行 在命令行上使用相同参数的相同查询与 'curl -XGET' 或仅将其放入浏览器时,查询运行正确并且大小参数 是 考虑在内。
原来我对大小参数的工作方式有误解。我相信 Jest was 在调整 query 结果时正确处理它,但我真正感兴趣的是 aggregation 结果。
向我的聚合添加 "size" 参数有效,如 Terms Aggregation 文档(复制在下方)中所示。
{
"aggs" : {
"products" : {
"terms" : {
"field" : "product",
"size" : 5
}
}
}
}
我正在使用 Jest 客户端从我的 Java 程序中查询 Elasticsearch。一切正常,除了当我添加 "size" 参数时它被忽略。搜索的构建和执行是这样的:
Search search = new Search.Builder(query)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.addIndex(index)
.addType(type)
.setParameter(Parameters.SIZE, 1)
.build();
jestClient.execute(search);
此查询总是 returns 10 个结果,而不是预期的 1 个结果。如果相关,则只有 5 个分片,因此它不会为每个分片返回一个结果。
这个参数被忽略有什么特别的原因吗?当 运行 在命令行上使用相同参数的相同查询与 'curl -XGET' 或仅将其放入浏览器时,查询运行正确并且大小参数 是 考虑在内。
原来我对大小参数的工作方式有误解。我相信 Jest was 在调整 query 结果时正确处理它,但我真正感兴趣的是 aggregation 结果。
向我的聚合添加 "size" 参数有效,如 Terms Aggregation 文档(复制在下方)中所示。
{
"aggs" : {
"products" : {
"terms" : {
"field" : "product",
"size" : 5
}
}
}
}