質問

Java APIを使用して、検索応答で集計のバケットを取得する方法はありますか?

{
  "took" : 185,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 200,
    "max_score" : 1.0,
    "hits" : [...]
  },
  "aggregations" : {
    "agg1" : {
      "buckets" : [...]
    },
    "agg2" : {
      "buckets" : [...]
    }
  }
}
.

現在、集計を得ることは可能ですが、バケットの入手方法を理解することはできません。

現在の1.0版のElasticsearch(v1.0.0.beta2)はまだベータ版であり、この機能はまだ追加する必要がありますが、その時点でも情報が見つかりませんでした。

役に立ちましたか?

解決

.github のeSソース彼らのテストでは以下を見ます:

SearchResponse response = client().prepareSearch("idx").setTypes("type")
                .setQuery(matchAllQuery())
                .addAggregation(terms("keys").field("key").size(3).order(Terms.Order.count(false)))
                .execute().actionGet();

Terms  terms = response.getAggregations().get("keys");
Collection<Terms.Bucket> buckets = terms.getBuckets();
assertThat(buckets.size(), equalTo(3));
.

他のヒント

誰かが実際の文書へのアクセスに疑問にはコードの後にこれらのバケットからカウントされるのを疑問に思います。

Terms  terms = response.getAggregations().get("agg1");
Collection<Terms.Bucket> buckets = terms.getBuckets();
for (Bucket bucket : buckets) {
    System.out.println(bucket.getKeyAsText() +" ("+bucket.getDocCount()+")");
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top