4
2

More than 3 years have passed since last update.

【Elasticsearch入門】速習Elasticsearch Aggregation 概要編

Last updated at Posted at 2020-07-28

ゴール

本記事ではElasticsearchで頻繁に使用されるAggregationの概要を理解してもらうことが目的となります。
CRUDやSearchと少し異なり新しい概念のため、まずは概要から説明していこうと思います。

  • CRUD
  • Search
    • query
    • aggregation
      • 概要
      • Metrics
      • Buckets

Elasticsearch

Elasticsearch は オープンソースの全文検索エンジンです。
Apache LuceneをベースとしたJavaで書かれたソフトウェアでElastic社により開発が進められています。
登録したドキュメントから目的の単語を含むドキュメントを高速に検索することができます。
基本的にElasticsearchではRestful APIを使って操作します。

Aggregationとは

Aggregationとは、検索の結果に対して分類や集計を行うことができる機能です。
通常の検索では、ユーザがあらかじめ指定したクエリに基づいてヒットしたドキュメントを結果として返します。
一方でAggregationでは、ドキュメントを特定のグループに分類したり、分類したグループごとの最大値や最小値、平均値などの統計量の値を返すことができます。

image.png

Elasticsearchと頻繁に用いられるKibanaではデータの可視化を行うことができます。
その際の裏側ではElasticsearchにクエリが投げられているのですが、
このようなAggregationのクエリが頻繁に投げられ、分類・集計が行われています。

Aggregationの構成

Aggregationでは分類や集計を行うための多くのタイプがあります。
これらをカテゴリ分けするといくつかのカテゴリに分かれますが、
Kibanaとの連携も含め重要なものを3つ挙げると以下の3つとなります。

  • Metrics
  • Buckets
  • Pipeline

それぞれを説明すると以下のようになります。

Metrics

分類されたグループに対して、最小、最大、平均などの統計値を計算します。

Buckets

ドキュメントをフィールド値に基づきグループ化するための分類方法です。
ブログ記事のカテゴリフィールドに基づく分類を行う。といった場合などに使用します。
他にもいいね数でヒストグラムで分けるといったような分類方法などもあります。

BucketsとMetricsを図で示すと以下のような分かれ方となります。

Pipeline

PipelineはBucketsなどの他のAggregationの結果を用いてさらに集計する機能となります。
Kibanaでの可視化で移動平均や前日との差分を取りたいといった用途で使うことが多いです。

MetricsとBuckets

ElasticsearchやKibanaを勉強する際は基本的にはMetricsとBucketsの概念を抑えておけば問題ありません。
よくあるやり方としてドキュメントをBucketsをグループに分割してグループごとの統計値を計算するという用途です。(もちろん個別に使うこともできます。)
以下は「ブログ記事をカテゴリごとに分類し、平均購読数を集計する」といった例になります。

image.png

以上がAggregationの基本的な概要となります。

次回から実際にAggregationの中身について解説していきます。
よろしくお願いします。

おすすめ教材

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2