使用Elasticsearch 1.x进行Java API聚合

咕oo

我是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版本中,我得到了一个空存储桶。

更新

事实证明代码是正确的,我遇到的问题与在测试案例中使用它有关;当用于正在运行的群集时,它可以工作。

伊曼纽·吉顿(Emmanuel Guiton)

我怀疑您的问题与请求的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章