はじめに

「ElasticSearch」の導入を考えている方に、ElasticSearchの基礎と使い方を徹底的に解説していきます。

さらに、メリットやダウンロードの手順についても説明していきますので最後までご覧ください。

それでは見ていきましょう。


ElasticSearchについて

「ElasticSearch」とは、Elastic社が提供しているLuceneベースの全文検索エンジンです。

大容量のデータの中から必要なデータを高速で取り出すことができます。


ElasticSearchの使いどころ

データ利活用におけるシステム要件は以下の通りです。

  • 様々な規模に拡張可能(検索トラフィック・データ量/書き込み速度)
  • 様々な種類のデータを横断して検索・分析可能
  • 様々な種類のデータ型・スキーマに対応可能
  • 高速なクエリ言語・クエリ実行・リアルタイム分析
  • 柔軟なデータモデル


基本概念

覚えておいた方がいい用語を紹介していきます。

インデックスデータを保存する場所で、RDBでいうテーブル。検索を目的としているため元文書の格納は必ずしも必要ない。
ノード・クラスタ可用性・耐障害性を実現するため、複数のサーバー上で実行。このサーバー群をクラスタ、個々のサーバーとノードという。
レプリカそれぞれのノードにはシャードのレプリカが存在。更新はもちろんプライマリのシャードに対して行われますが、万が一プライマリのシャードが失われると新しくレプリカのシャードがプライマリとなる。
シャード大量のデータを使う際、それぞれのノードでデータを分割して保持。その時にシャードと呼ばれる部分インデックスで分割。



ElasticSearchの仕組み

API・Logstash・Amazon Kinesis Firehoseといった取り込みツールを使用し、JSONドキュメント形式でデータをElasticSearchへ送信することが可能です。

自動で元のドキュメントを保存して、検索可能な参照をクラスターのインデックスに追加した後にElasticSearch APIを使用してドキュメントの検索・取得が可能。

オープンソースの可視化ツールであるKibana・ElasticSearchを併用し、データを可視化してインタラクティブなダッシュボードを構築することも可能です。


Kibanaとは?

「Kibana(キバナ)」とは、Elastic社が開発しているビジュアライゼーションのためのツールです。

全文検索エンジンのElasticSearchと連携して使用するデータ解析・可視化プラットフォーム。

データ分析及び検索ダッシュボードで全文検索エンジンのElasticSearch用のオープンソースのデータ視覚化プラグインとして機能。

Kibanaの主な特徴は以下の通りです。

  • Node.js Webサーバー搭載
  • コマンドラインを使用しないでDUI操作で各種設定管理・セキュリティ機能設定・データ追加可能
  • (EkasticStack)プロダクト
  • パワフルな開発ツールが用意
  • 簡単に使用可能


ElasticSearchの特徴について

ここでは、Elasticsearch特徴を説明していきます。


全文検索

Elasticsearchは全文検索エンジンとして、高い能力を発揮します。

全文検索エンジンとは、大量にあるドキュメントデータの中から指定したキーワードを含むドキュメントデータを素早く検索するための仕組み

特徴は以下の通りです。

  • 検索の条件との関係性
  • 関連性の高いデータを抽出して返す


高速検索処理

高速検索を実現している技術は以下の通りです。

  • 全文検索のための有限状態トランスデューサを使用したインデックス
  • 分析用カラムストア
  • 数値データ・地理データを格納するためのBKDツリー

このような技術によって高速検索処理を行なえ、繰り返し検索・広範囲検索などの実行が簡単となるためデータ活用性をさらに向上させることが可能です。


多様なクエリに対応

Elasticsearchは、以下のように多様なデータタイプの検索に対応しています。

  • テキスト
  • 構造化データ
  • 非構造化データ
  • 数値
  • 地理情報
  • メトリック  など


スキーマレス

Elasticsearchは、事前のデータマッピング(スキーマ定義)を行わないでデータ投入を始めることができます

フィードしたフィールド値から自動で型などが判別されてデータ投入した後にスキーマの調整・修正を行うことができ、また明示的にスキーマの定義を行うことも可能。


可用性

Elasticsearchは、分散環境で安全な運用をするという考えの元設計されています。

複数のサーバーの1つをクラスタとして構成でき、そのクラスタ構成が前提となっているのでマシン5台の場合でも1台構成のクラスタとして起動することが可能です。

Elasticsearchで扱うデータはクラスタに所属する各サーバーに分散して保存されるため、障害を検知してクラスタとデータを安全に保持して運用を継続します。

クラスタを構成している1つのサーバーが停止してしまった場合には、そのサーバーを切り離した状態でサービスを続けられます。

まら、データを複数のサーバーに分散して配置する構成にしておくことで、データが失われる可能性を低下させる冗長化システムを構築することが可能です。


スケーラビリティ

Elasticsearchは数百台のクラスタ構成・ペタバイト級のデータにも対応可能で、プロトタイプからプロダクションまでスムーズに以降することが可能です。

システムを停止することなくElasticsearchサーバーを追加することができるため、簡単にシステムを拡張することができます。

Elasticsearchマシンを追加すると既存データの分散・レプリカなども自動的に実行されてクラスタ全体に渡るインデックス・クエリの分散も自動で調整。

1つのノードでも300ノードでもパフォーマンスを維持したままアクセスすることが可能です。

導入時など最初の方は最小構成で開始して、データ量・アクセス量の増加に合わせてサーバーを追加するようなシステムの拡張ができるためスムーズな運用が可能


その他

Elasticsearchのその他の特徴は以下の通りです。

  • オープンコントロール
  • マルチテナント

ElasticSearchの主な機能について

Elasticsearchの主な機能は以下の通りです。

フォーマットJSON
オフィシャルなクライアントライブラリGo・Java・JavaScript・Perl・PHP・Python・Ruby・.NET
コミュニティ提供のクライアントライブラリB4j・C++・ColdFusion・Clojure・Erlang・Go・Groovy・Haskell・Java・JavaScript・Kotlin・Lua・OCaml・Perl・PHP・Python・R・Ruby・Rust・Scala・Smalltalk・Vert.x・.NET
レプリケーションデフォルトで5台のシャード構成データは各ノードにレプリケート

1台構成でも稼働可能

データのインポートActiveMQ・CouchDB・DynamoDB・FileSystem・Git・Hazqlcast・JDBC・JMS・Kafka・LDAP・MongoDB・neo4j・OAI・RabbitMQ・Redis・RSS・Solr・Subversion・Twitter
Webインターフェースbigdesk・elastidsearch-head・elasticsearch-HQなどのプラグインにより提供
可視化ツールKibana


ElasticSearchのメリットについて

ここでは、ElasticSearchのメリットを説明していきます。


高性能

ElasticSearchは分散型のため、大量のデータを並行処理してクエリに最も適したものを素早く見つけることが可能です。


無料のツール・プラグイン

一般的な可視化及びレポートの作成ツールであるKibanaと統合されており、またソースデータを容易に変換してElasticSearchクラスターにロードすることも可能。

さらにLogstash・Beatsとの統合も提供しています。

言語サジェスタ・言語アナライザといったオープンソースのElasticSearchプラグインを幾つか使用して、アプリケーションに機能を追加して充実させることも可能


時間の短縮

ElasticSearchは、単純なHTTPインターフェース・単純なRESTベースのAPIを提供しています。

スキーマフリーJSONドキュメントを使用するために様々なユースケースに対応したアプリケーションを簡単に作ることが可能です。


オペレーションがほぼリアルタイム

ElasticSearchオペレーションは、データの読み書きなどの完了までに1秒もかからないという短い時間でできます

これによってアプリケーションの異常検出・モニタリングなどをほぼリアルタイムのユースケースに使用することが可能です。


ElasticSearchのダウンロード手順について

ElasticSearchのダウンロード手順は以下の通りです。

  1. 公式サイトを開いて「ダウンロード」ボタンをクリック
  2. 製品別のダウンロードページに飛んだら「ElasticSearch/Download」ボタンをクリック
  3. 「Download」の項目から自分のOSに合うファイルをダウンロード
  4. ダウンロードしたファイルを適当なフォルダで解凍

WindowsからElasticSearchを起動する場合binフォルダを開き、その中の「elasticseach.bat」をコマンドプロンプトから起動。


ElasticSearchのインストール方法について

ElasticSearchをインストールする前に、動作するにはJavaが必要ですのでJavaのインストールも含めて説明していきます。


yum経由でのインストール手順

Java(1.8.1_131以上)をインストール

  1. $ yum install -y java -1.8.1.openjdk-devel
  2. $ java -version 

レポジトリに追加。

  1. $ rpm — import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  2. $ vi /etc/yum.repos.d/elasticsearch.repo
  3. # 下記を入力して保存
  4. [elasticsearch-5.x]   # ここでは5.x系としていますが6.xに置換すれば6.xが入る
  5. name=Elasticsearch repository for 5.x packages
  6. baseuel=https://artifacts.elastic.co/packages/5.x/yum
  7. gpgkey=1
  8. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
  9. enabled=1
  10. autorefresh=1
  11. type=rpm-md

あとはいつものコマンドでインストールできます。

  1. # yum install elasticsearch


ElasticSearchの使い方について

ここではElasticSearchの使い方について説明していきます。


マッピングの確認

下記のクエリで作ったデータの構成を確認

  1. curl -XGET “http://locaohost:9200/<index?>/<type?>/_mapping”


通常検索

検索を行うには下記のようなリクエストを使用

  1. curl -XGET“http://localhost:9200/sample_20200323/recipes/_search”
  2. # 複数インデックスにまたがって検索
  3. curl -XGET “http://localhost:9200/_saerch”
  4. # 同じインデックス内の複数タイプにまたがって検索
  5. curl -XGET “http://localhost:9200/<index名>/_saerch” 


まとめ

いかがでしたでしょうか。

ElasticSearchは高速な分析や柔軟性といった利点があり、手軽に強力な機能を導入することができます

さらに簡単に拡張することもできるため、ぜひElasticSearchを利用してデータをより便利に活用してみましょう。


toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。