📔

Elasticsearchって何?

2021/08/31に公開

はじめに

普段Elasticsearchを利用していますが、これは何?って聞かれてすぐに答えられなかったので、概要を調べて整理してみることにしました。

まとめ

  • Elasticsearchとは、分散処理が可能な検索・分析エンジンである
  • documentという単位でデータを登録し、indexの単位でデータを検索できる。documentとindexを関連付けることができる

まとめてみたこと

Elasticsearchとは?

  • Elasticsearchとは、分散処理が可能な検索・分析エンジンである
  • ちなみに
    • Apache Luceneをベースに開発されたプロダクトである
    • Elactic社が提供するElastic Stackというプロダクト郡の中の一つである

どんな特徴があるのか

  • スケーラブル
  • 扱うデータ量やリクエスト量に応じてスケール
  • リアルタイム
  • ほぼリアルタイムに分析・検索が可能
  • 開発者フレンドリー
  • 高可用性

また、無料で利用できます。
なお、公式サイトの概要説明によれば、有償のオプションもあるとのことです。

有償のサブスクリプションをご購入いただくことにより、アラートや機械学習などの高度な機能をお使いいただけます。

ユースケース

  • 先に上げた特徴により、大量のデータから効率よく検索する機能を実現できるため、こんなケースで利用されています
    • アプリ検索
    • Webサイト検索
    • エンタープライズサーチ
    • ロギングとログ分析
    • インフラメトリックとコンテナー監視
    • アプリケーションパフォーマンス監視(APM)
    • 地理空間データ分析と可視化
    • セキュリティ分析
    • ビジネス分析

利用の流れ

  • データの投入
    • 各データソースから入ってくる生データをElasticsearchにindexする
  • データの取得
    • クエリの実行
    • Kibanaを利用した可視化

documentについて

  • Elasticsearchは、データをdocumentの単位で登録することができる
  • documentはJSON形式であり、fieldとvalueを持つ
    • field:キー
    • value:値
  • 各fieldには型を定義することができる
    • 次のようなバリエーションがある:文字列、数値、ブール値、日付、数値アレイ、地理情報、ないしその他の種類のデータ
  • 型の定義をmappingという。mappingが無いものは自動で型が設定される

indexとdocumentの関係

  • indexにdocumentを登録する(indexする)ことができる
  • 登録したdocumentは、様々な条件を付けて検索することができる。
  • 実世界で例えてみると、documentの集まりが1冊の本で、indexがその本の索引である、と思った。

使い方

  • Elasticsearchを起動して、REST API経由でCRUDを実行したり、インデックスに対する検索やフィルタリング、アグリゲーションなどが可能
  • 利用方法の一つとして、Kibanaを利用してWebUI上からElasticsearchに対するリクエスト送信・レスポンス確認をすることができる、というものがある

参考

Discussion