我是Elasticsearch聚合领域的新手,并且深陷于此链接中的一个非常简单的示例。
基本上,我试图做这个非常简单的工作聚合的Java API版本:
http://localhost:9200/cars/transactions/_search?search_type=count
{
"aggs" : {
"colors" : {
"terms" : {
"field" : "color"
}
}
}
}
这是我要构建的Java版本,但它返回空存储桶:
SearchResponse sr = client
.prepareSearch("cars")
.setTypes("transactions")
.setSearchType(SearchType.COUNT)
.addAggregation(AggregationBuilders.terms("colors").field("color"))
.execute()
.actionGet();
在使用Elastic DSL时,我得到了按颜色分组的存储桶的正确响应,但是在Java版本中,我得到了一个空存储桶。
事实证明代码是正确的,我遇到的问题与在测试案例中使用它有关;当用于正在运行的群集时,它可以工作。
我怀疑您的问题与请求的Java版本无关,这很好。我在已有的一些测试数据上进行了尝试,并获得了预期的结果。集群正在运行Elasticsearch 1.7.5。
我使用的Java代码段:
final SearchResponse sr = client
.prepareSearch("index")
.setTypes("docType")
.setSearchType(SearchType.COUNT)
.addAggregation(AggregationBuilders.terms("aggName").field("fieldName"))
.execute()
.actionGet();
System.out.println(sr);
我得到的结果是:
{
"took" : 130,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1927227,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"aggName" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "key1",
"doc_count" : 757843
}, {
"key" : "key2",
"doc_count" : 620033
}, {
"key" : "key3",
"doc_count" : 549351
} ]
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句