- Geo Bounds Aggregation
- Geo Centroid Aggregation
- Geo Distance Aggregation
- GeoHash Grid Aggregation
- Global Aggregation
- Top Hits Aggregation
- Histgram Aggregation
- Nested Aggregation
- Significant Terms Aggregation
- Sampler Aggregation
ElasticsearchのAggregationsはよくある集計はひととおりできるのだけど、変わり種と思われるものをチョイスしてあんちょこメモ。
Geo Bounds Aggregation
複数地点の全てを含むような四角形の領域の左上・右下の頂点の座標を返す
Geo Centroid Aggregation
複数地点の中心点の座標を返す
Geo Distance Aggregation
中心からの距離の範囲を複数指定すると、その範囲ごとにヒットする件数を返す
GeoHash Grid Aggregation
前提:GeoHashを理解しておく。 ※座標に関する住所コードみたいなもので、住所コードと違って演算で求められる。 得られるハッシュ値は、文字列の末尾を付け足すほど精度が高くなる。言い換えると、近隣の2つのGeohashの値は似た文字列になることが多い。
検索時に指定の桁数の精度(precisionプロパティで、GeoHashの桁数を指定)の単位で、グリッドを分類し、同じグリッド内の件数をカウントする。
GeoHashの桁数が6の場合、おおよそ1km四方、8桁の場合30m四方ぐらいの模様。実際は長方形。
要は地理上のgroup by。
Geo系は、こちらのサイトで、検索方法などが図示されているのでわかりやすい。
Global Aggregation
ドキュメント全体のあるフィールドの集計値と、検索にヒットしたものの集計値を同時に返す。 あるお店の衣料品の平均価格と、Tシャツのみの平均価格。
Top Hits Aggregation
各グループの中で、特定条件のランキング上位N件のリストを取得
https://dev.classmethod.jp/server-side/elasticsearch/kibana-top-hits-aggregation-timepicker/
Histgram Aggregation
ヒストグラム型のグループ化をした上での集計。
kibanaしかり、時系列ログの数量グラフ化などの機能のリッチさの裏付なんだかどうだか、他にもIntervalを区切って集計みたいなのは充実してる気がする。便利便利。
Nested Aggregation
どれくらい使うかは自分のユースケースだとピンとこなかったが、なんかいざという時にべんりそう。
Significant Terms Aggregation
検索結果のドキュメント群を通して特徴的なワードを抽出して、ランキングリストを返す。
Sampler Aggregation
検索結果の中うち、ハイスコアのドキュメント群から特徴的なワードの一覧を返す。