マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Elasticsearch

【OSS情報アーカイブ】Elasticsearch

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

コンテンツ

「Elasticsearch」とは

「Elasticsearch」基本情報

■概要

Elasticsearch(エラスティックサーチ)とは、全文検索エンジンです。マルチテナント、スキーマレスでクラウドに最適化されています。

■基本説明

Elasticsearchは、Elastic社が提供しているオープンソースの全文検索エンジンです。

HTTP WebインターフェイスとスキーマフリーのJSONドキュメントを備えており、さまざまなユースケースに対応できる分散型RESTful検索が可能です。スケーラビリティに優れたマルチテナント対応のフルテキスト検索エンジン機能を提供します。

Elasticsearchは、特に、検索速度や分析柔軟性に優れています。強力な検索機能をシンプルに利用でき、データ蓄積/分析/可視化環境を容易に構築できます。

■経緯

・2010年:初版リリース

Elasticsearchは、「ユーザーが、もっと簡単に、本当に欲しいものを検索できるように」というコンセプトで開発されています。

■ユースケース

Elasticsearchを利用すると、大容量のデータから必要なデータを素早くに取り出すことができ、「リアルタイムデータ分析」「ログ解析」「全文検索」などさまざまな用途で利用できます。

データ検索

膨大なプロダクトリストから特定のキーワードに合致するプロダクトを検索するなどの用途に利用できます。

サーバログ解析

Webサーバのログから、ユーザーのページ閲覧情報を収集して、ユーザーアクション分析に利用できます。

ビッグデータ処理

大規模な全文検索を高速に実行できるため、ビッグデータを扱うシステムも構築できます。

■オフィシャルサイト情報

オフィシャルサイト

→Elastic →Elasticsearch

ライセンス情報

Elasticsearchのライセンスは「Apache License Version 2.0」です。

詳細について、こちらを参照ください。
→GitHub →elastic →elasticsearch →LICENSE.txt

動作環境

Elasticsearchは「Linux」「Windows」「macOS」などに対応しています。

ダウンロード

→Elastic →Elasticsearch →Download Elasticsearch

導入事例

→Elastic →ユーザーストーリー

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Fess」「Groonga」など。

「Elastic Stack」プロダクト

■「Elastic Stack」とは

「Elastic Stack」とは、Elastic社が提供するソフトウェア群で、データの収集/加工/集計/分析を行うための機能を備えています。以前は「ELK」という名称でしたが、バージョン5から「Elastic Stack」に改名されています。

Elasticsearchは「Elastic Stack」の中心的プロダクトで、他の「Elastic Stack」プロダクトと連携することで、「データ可視化機能」「セキュリティ機能」「監視機能」「アラート機能」「レポート機能」「グラフ探索機能」「機械学習機能」などを含む高機能なソリューションとして利用できます。

→Elastic →Elastic Stack

■データ可視化「Kibana」

Kibanaは、データ解析/可視化ツールで、Elasticsearchと連携して使用するように設計されています。

時間軸分析に強みがあり、分かりやすいグラフィカル表示を行えます。

→OSSxCloud News →オープンソースのBIツール/Kibanaとは

■データ収集/転送「Beats」

Beatsとはデータ収集/転送プラットフォームです。

サーバからあらゆる種類のオペレーショナルデータを収集して、Elasticsearch/Logstashなどに情報を転送します。

→OSSxCloud News →オープンソースの運用管理・運用自動化/Beatsとは

■ログ収集管理「Logstash」

Logstashは、ログ収集管理ツールで、サーバサイドデータ処理パイプラインとして、さまざまなデータソースからログを収集し、1つのサーバに集約する機能を提供します。

→OSSxCloud News →オープンソースのログ管理/Logstashとは

「Elasticsearch」の主な特徴

「Elasticsearch」の主な特徴

■スキーマレス

Elasticsearchは、事前のスキーマ定義(データマッピング)は行わずに、データ投入を開始できます。フィードしたフィールド値から自動的に型などが判別され、データ投入後にスキーマの調整や修正を行えます。

また、明示的にスキーマ定義を行うことも可能です。

■全文検索

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

「検索条件との関係性/関連性が高いデータを抽出して返す」という特徴があります。

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

■高速検索処理

Elasticsearchは検索処理の高速性を特徴としています。

「全文検索のための有限状態トランスデューサを使用した転置インデックス」「数値データや地理データを格納するためのBKDツリー」「分析用カラムストア」などの技術により高速検索を実現しています。

高速検索が可能なことにより、「繰り返し検索」や「広範囲検索」などの実行が容易となるため、データ活用性をより向上できます。

■多様なクエリに対応

Elasticsearchは、多様なデータタイプの検索に対応します。

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

■マルチテナント

Elasticsearchはマルチテナントをサポートしているため、柔軟に運用できます。

■可用性(分散構成)

Elasticsearchは分散環境での安全な運用を考慮して設計されています。複数サーバを1つのクラスタとして構成できます。クラスタ構成が前提となっているため、マシン1台の場合でも1台構成のクラスタとして起動します。

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

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

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

■スケーラビリティ

Elasticsearchは「数百台のクラスタ構成」や「ペタバイト級データ」にも対応でき、プロトタイプからプロダクションまでスムーズに移行できます。

システムを停止することなくElasticsearchサーバを追加して、システムを拡張できます。Elasticsearchマシンを追加すると、既存データの分散/レプリカなども自動で実行され、クラスタ全体に渡るインデックスとクエリの分散も自動的に調整されます。1つのノードで実行中でも、300ノードのクラスタで実行中でも、ハイパフォーマンスを維持したままアクセスできます。

導入時は最小構成でスタートして、データ量やアクセス量の増加に合わせてサーバを追加するようなシステム拡張が可能であるため、極めてスムーズな運用が実現します。

■オープンコントロール

Elasticsearchはブラックボックスではなく、完全にビジブルでコントロール可能です。

直観的なAPIでモニタリングや管理できます。

「Elasticsearch」の主な機能

「Elasticsearch」の主な機能

■Hadoop連携コネクタ「Elasticsearch-Hadoop(ES-Hadoop)」

Hadoop連携コネクタ「Elasticsearch-Hadoop」を利用すると、Hadoopのパワフルな処理能力をElasticsearchに接続できます。

ビッグデータからすばやくインサイトを取得することが可能となり、Hadoopエコシステムでさらに効率よく作業できます。

Hadoopと連携した「ビッグデータリアルタイム検索」「テキストデータのエンリッチメント」「データ整形処理」などが容易に行えます。

→Elastic →Elasticsearch-Hadoop

■SQL検索機能「Elasticsearch SQL」

「Elasticsearch SQL」を使用すると、SQLで全文検索を実行できます。

使い慣れたクエリ構文を活用して効率的な検索を実施できます。

→Elastic →Elastic Stack →Elasticsearch SQL

Query DSL

Elasticsearchは、JSONベースで拡張性に優れたクエリ構文「Query DSL(Domain Specific Language)」を提供しています。

Elasticsearch SQLは「Query DSL変換機能」を備えており、SQL構文をQuery DSLで表示します。

Query DSLを使用することで、さらに効率的なクエリを作成できます。

→Elasticsearch →Docs →Query DSL

「Elasticsearch」のライブラリとプラグイン

「Elasticsearch」のライブラリとプラグイン

■API

データの登録や検索は、Elasticsearchが提供する「Restful API」を通して実行します。

Elasticが開発/保守するクライアントライブラリが「Java」「Python」「PHP」などの言語で用意されています。また、コミュニティによるクライアントも利用できます。

■Elastic公式クライアントライブラリ

・Java
・C#
・Python
・JavaScript
・PHP
・Perl
・Ruby
・SQL など

→Elastic →Docs →Elasticsearch Clients

■コミュニティクライアントライブラリ

・C++
・Clojure
・Erlang
・Go言語
・Haskell
・kotlin
・Lua
・OCaml
・R言語
・Rust
・Scala
・Smalltalk など

→Elastic →Docs →Community Contributed Clients

■プラグイン

プラグインでElasticsearch機能を強化でき、さまざまなプラグインが用意されています。

・カスタムマッピングタイプ
・カスタムアナライザ
・ネイティブスクリプト
・カスタムディスカバリ など

→Elastic →Docs →Elasticsearch Plugins and Integrations

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Elasticsearch参考情報①Elasticsearchとは(入門編)

Elasticsearch参考情報①Elasticsearchとは(入門編)

「Elasticsearch」の概要について解説しているサイトを紹介します。

■知識ゼロからElasticsearchを実践で使えるようになろう!

概要

「Elasticsearchの概念」「全文検索技術の基本」など、全文検索に関する知識がゼロからでも分かるように解説されています。

解説テーマ

・Elasticsearchの概念を学ぶ
・全文検索技術の基本を知る
・実践の知識を学ぶ
・インデックス定義の設計を学ぶ
・ドキュメントの作成・更新・削除処理
・Search APIやQuery DSLを学ぶ
・Elasticsearchの公式ドキュメントの引き方を学ぶ
・まとめ

→$shibayu36 blog →知識ゼロからElasticsearchを実践で使えるようになろう!

■「Elasticsearchと対話Botによる対話型の検索システム」連載

概要

「対話インターフェースを利用した検索システムの体験」を目的とした連載です。

Elasticsearchのことを学びつつ、実際に実装しながら「新しいタイプの検索システム」を構築していく内容になっています。

解説テーマ

・Elasticsearchを用いた日本語検索システムの理論と設定
・Elasticsearchを用いた日本語検索システムの実装
・Elasticsearchへの大量データ登録の効率化
・使いたくなる検索システムのUIをSlackBotで実現する
・SlackとElasticsearchを連携し、使いやすい検索システムを作成する

→CodeZine →「Elasticsearchと対話Botによる対話型の検索システム」連載一覧

Elasticsearch参考情報②Elasticsearchの環境別インストール

Elasticsearch参考情報②Elasticsearchの環境別インストール

Elasticsearchのインストール方法について、環境別に紹介します。

■Linux(Ubuntu)編

概要

「Ubuntu 15.10」に「Elasticsearch 2.2.0」をインストールする方法について紹介されています。

解説テーマ

・install(Java+Elasticsearch)
・起動
・pluginのインストール
・とりあえず今の状態を確認する
・設定を行う
・indexでデータを格納する
・query

ページリンク

→Qiita →Elasticsearch触ってみた。

■Windows編

概要

Windowsに「Elasticsearch」+「Kibana」をインストールする方法について紹介されています。

Elasticsearchプラグインの紹介とインストール方法も記載されています。

解説テーマ

・ElasticsearchとKibanaの概要
・環境セットアップ
・Elasticsearchプラグインの紹介とインストール手順
・補足:アプリケーション起動・停止コマンド

ページリンク

→Qiita →Elasticsearch+Kibanaでデータ解析(①環境セットアップ編)

■Mac編

概要

Mac「OS X 10.10.5」に、ELK(「Elasticsearch 2.3.2」「Logstash 2.3.2」「kibana 4.5」)をインストールする方法について紹介されています。

解説テーマ

・java(JDK)のダウンロードとインストール
・インストール
・pluginのためにパス通す
・プラグインいれる
・起動

ページリンク

→Qiita →MacにELK(Elasticsearch, Logstash, Kibana)インストールしてみた

■Docker編

概要

ElasticsearchのオフィシャルDockerコンテナを利用して、Elasticsearch+Kibana環境構築を行なう方法について紹介されています。

解説テーマ

[環境]
・バージョン
・プラグイン(X-Pack、kuromoji)
[Docker のファイルを準備]
・docker-compose.yml
・es/Dockerfile
・es/config/elasticsearch.yml
・es/config/log4j2.properties
・kibana/Dockerfile
[ビルドと実行]
・kibana の画面にアクセス

ページリンク

→Qiita →Dockerを利用して Elasticsearch + Kibana の環境を作る

Elasticsearch参考情報③Elasticsearchのマッピング

Elasticsearch参考情報③Elasticsearchのマッピング

■「Elasticsearchのマッピング」とは

概要

Elasticsearchにおける「マッピング」とは、リレーショナルDBでの「テーブル定義」に相当します。

「フィールド名」+「フィールド型」の定義に加えて、ドキュメントを効率よく検索するために必要となる「型情報」が必要となります。

検索精度を最適化するために、アプリケーション仕様に適合するマッピングが必要です。

基本的な「フィールド型」

・String : 文字列
・Number : 数値
・Date : 日付 など

代表的な「型情報」

[index]
・analyzed:検索可能フィールド
・no:検索不可フィールド
・not_analized:完全一致での検索は可能

[null_value]
値がない場合に、デフォルトで登録される値

自動マッピング

対象データを取り込む場合、基本的なルールにより、基本的な型に自動マッピングされます。

手動マッピング

自動マッピングでは、十分な検索精度が得られない場合は、手動でマッピングを行います。

各フィールドに対して「型情報」を設定します。
・検索可能/不可 設定
・日本語解析用analyzer設定 など

■参考サイト(1)Hello! Elasticsearch.

概要

Elasticsearchにおけるマッピングの基本について、分かりやすく解説されています。

解説テーマ

・自動マッピング
・手動マッピング定義が必要なケース
・手動マッピング
・マッピングのテスト

ページリンク

→Hello! Elasticsearch. →Elasticsearch マッピング Elasticsearch Mapping — ドキュメントスキーマと検索精度を最適化するためのマッピング定義

■参考サイト(2)Elasticsearchのインデックス定義設計手順

概要

インデックス(マッピング)定義設計について、「まずやりたいことを確定して、その後、どのような手順で進めていけばよいのか」について解説されています。

解説テーマ

・今回サンプルとする例
・インデックスやマッピングを設計する手順
・Elasticsearchでやりたいことを決める
・フィールドとその型を決める
・全文検索のためにどのようにアナライズするか考える
・その他細かい検討を行う
・最終的なインデックス定義のJSONを作る
・まとめ

ページリンク

→$shibayu36 blog →Elasticsearchのインデックス定義を設計する手順

■参考サイト(3)マッピングの変更に関する問題点と解決法

概要

elasticサイトのエンジニアブログ「The Great Mapping Refactoring」が日本語訳されています。

「マッピングの変更に関する問題点と解決法」について解説されています。

解説テーマ

・フィールドマッピングのコンフリクト
・あいまいなフィールドのルックアップ
・タイプのメタフィールド
・アナライザ設定
・index_nameとpath
・同期的なマッピングの更新
・マッピングの削除
・2.0のための準備

ページリンク

→@johtaniの日記 2nd →Mappingのすばらしいリファクタリング(日本語訳)

Elasticsearch参考情報④Elasticsearchの使えるプラグイン

Elasticsearch参考情報④Elasticsearchの使えるプラグイン

■Elasticsearchプラグイン概要

Elasticsearchは、各種プラグインを導入することによって、さまざまな機能強化を行えます。

多くの種類が用意されています。
・カスタムマッピングタイプ
・カスタムアナライザ
・ネイティブスクリプト
・カスタムディスカバリ など

→elastic →Docs →Elasticsearch Plugins and Integrations

■参考サイト(1) プラグインの管理方法と主なプラグイン

概要

「プラグインのインストール/確認/削除方法」と「おすすめプラグイン」について紹介されています。

解説テーマ

・Installing Plugins.
・Installed Plugins.
・Removing Plugins.
[Plugins.]
・Analysis Plugins.
・Discovery Plugins.
・River Plugins.
・Scripting Plugins.
・Site Plugins.
・Snapshot/Restore Repository Plugins.
・Misc Plugins.

ページリンク

→Hello! Elasticsearch. →Elasticsearch プラグイン Elasticsearch Plugins — 機能を拡張するプラグインの管理方法と主なプラグイン

■参考サイト(2) いつも入れているElasticsearchプラグイン

概要

便利なプラグインについて紹介されています。

解説テーマ

・elasticsearch-analysis-kuromoji
・elasticsearch-extended-analyze
・polyfractal/elasticsearch-inquisitor
・mobz/elasticsearch-head
・royrusso/elasticsearch-HQ
・polyfractal/elasticsearch-segmentspy
・elasticsearch/marvel

ページリンク

→@johtaniの日記 2nd →いつも入れているElasticsearchのプラグイン

■参考サイト(3) ブラウザで操作/閲覧できるプラグイン「ElasticSearch Head」

概要

Elasticsearchをブラウザで操作/閲覧できるプラグイン「ElasticSearch Head」のインストール方法と概要について紹介されています。

解説テーマ

・ElasticSearch Head
・インストール
・外部からアクセスできるようにする
・Browser
・Structured Query
・Any Query
・軽く使ってみて

ページリンク

→気まぐれDeveloperブログ →Elasticsearchを学ぶ 2 – Plugin ElasticSearch Head –

■参考サイト(4) 「Shield」での監査証跡出力+「Watcher」での不正アクセス検知

概要

Elasticsearchの有償プラグイン「Shield」で監査証跡を出力し、「Watcher」を利用して監査証跡から不正アクセスを検知してメールアラートを送信する方法について解説されています。

解説テーマ

・概要
・はじめに
・環境情報
・監査証跡出力
・不正アクセス検知・アラート
・不正アクセス
・まとめ

ページリンク

→Qiita →Elasticsearchのプラグイン「Shield」「Watcher」による不正アクセス監査

Elasticsearch参考情報⑤ElasticsearchのAPI入門

Elasticsearch参考情報⑤ElasticsearchのAPI入門

■ElasticsearchのAPI

Elasticsearchには豊富なAPIが用意されており、さまざまな処理を行えます。

オフィシャルサイトでの解説を参照できます。

→Elasticsearch →Docs →API Documentation

→elastics →Elasticsearch Reference →Document APIs

■参考サイト(1) 初心者のためのRest APIから覚えるElasticsearch

概要

APIを使用してElasticsearchの各機能を使用する方法について、解説されています。

「Elasticsearch起動」「ドキュメント操作」「検索」などをAPIで操作します。

解説テーマ

・はじめに
・1. Elasticserchのヘルスチェック
・2.マッピング
・3.ドキュメントを操作する
・4.検索
・5.更に検索する
・RestAPIの共通オプション
・終わりに

ページリンク

→Qiita →Elasticsearch Advent Calendar 2015 5日目 →初心者のためのRest APIから覚えるElasticsearch

■参考サイト(2) Elasticsearch公式ドキュメントベースのハンズオン(前編)

概要

Elasticsearch公式ドキュメントを参考にしたハンズオン(前編)です。

「Elasticsearchの起動/停止」「ドキュメント管理(追加/登録/削除)」を中心に説明されています。

解説テーマ

・ハンズオンの内容
・事前準備
・Elasticsearch のインストール
・基本コンセプト
・ハンズオン
・練習1. 起動・停止とステータス確認
・練習2. Cluster や Node 、Index の状態を確認する
・練習3. ドキュメントの操作
・練習4. バッチプロセッシング
・さいごに

ページリンク

→Developers.IO →第7回 Elasticsearch 入門 API の使い方をハンズオンで理解する 〜前編〜

■参考サイト(3) Elasticsearch公式ドキュメントベースのハンズオン(後編)

概要

Elasticsearch公式ドキュメントを参考にしたハンズオン(後編)です。

社員情報サンプルデータを使用して、APIを使用した「検索」や「分析方法」について解説されています。

解説テーマ

・サンプルデータのインデックス
・サンプルデータの説明
・Mapping 情報をもう少し詳し見る
・検索
・検索結果の _source から任意のフィールドを除外
・ページング
・検索結果をフィルタリング
・集計
・検索条件のテンプート化(Search Template)
・さいごに

ページリンク

→Developers.IO →第8回 Elasticsearch 入門 API の使い方をハンズオンで理解する 〜後編〜

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】自然言語でアプリ開発「 GitHub Spark 」とは?⚡

デジタル寺田の3分用語解説

2024.11.25

【デジタル寺田の3分用語解説】自然言語でアプリ開発「 GitHub Spark 」とは?⚡

「 GitHub Spark 」は、コードを書かずに自然言語でアプリを作成できるAIツールです。アイデアを言葉で伝えるだけで、AIが自動的にアプリを作成します。リアルタイム編集や自動デプロイに対応し、初心者でも簡単にアプリ開発を楽しめます。

【デジタル寺田の3分用語解説】経済産業省「 ダイバーシティ・コンパス 」とは?🧭

デジタル寺田の3分用語解説

2024.11.25

【デジタル寺田の3分用語解説】経済産業省「 ダイバーシティ・コンパス 」とは?🧭

経済産業省の「 ダイバーシティ・コンパス 」は、多様性を活かし企業の持続的成長を目指すためのツールです。企業が「目指す姿」や「行動指針」を整理し、未来へのビジョンを描く支援をします。また、診断ツールを活用し、「経営者」「人事」「現場」の取り組み状況を可視化することで、新たなステップを模索できます。

【デジタル寺田の3分用語解説】「企業によるベンダー、SIerへの 訴訟 」とは?〜日本通運がアクセンチュアを提訴〜🏢

デジタル寺田の3分用語解説

2024.11.25

【デジタル寺田の3分用語解説】「企業によるベンダー、SIerへの 訴訟 」とは?〜日本通運がアクセンチュアを提訴〜🏢

企業がベンダー(SIer)に対する 訴訟 の背景や原因を解説します。日本通運とアクセンチュアの125億円訴訟に加え、他の大規模な紛争事例も紹介します。プロジェクト管理や要件定義の重要性を具体例で説明し、成功への鍵を探ります。