はてだBlog(仮称)

私的なブログど真ん中のつもりでしたが、気づけばWebサイト系のアプリケーション開発周りで感じたこと寄りの自分メモなどをつれづれ述べています。2020年6月現在、Elasticsearch、pandas、CMSなどに関する話題が多めです。...ですが、だんだんとより私的なプログラムのスニペット置き場になりつつあります。ブログで述べている内容は所属組織で販売している製品などに関するものではなく、また所属する組織の見解を代表するものではありません。

Elasticsearchのこんなのもあるのね的なAggregations

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系は、こちらのサイトで、検索方法などが図示されているのでわかりやすい。

dev.classmethod.jp

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

検索結果の中うち、ハイスコアのドキュメント群から特徴的なワードの一覧を返す。