Elasticsearchとは
様々なユースケースを解決する分散型RESTful検索/分析エンジン
公式サイト
分散型とは
以下、Wikipediaより引用。
分散型(ぶんさんがた)とは、複数のコンピュータなどに分散して機能を持たせること、またはそれで一つの機能を動作させる考え方。集中型の反対の意味として用いられる。
分散型で構成することにより、高速で柔軟な検索が可能になります。
参考記事
Elasticsearch
はじめてのElasticsearchクラスタ
Restfulとは
分散型システムを使いやすくする仕組み、設計方法の一つ。
以下、RESTful APIとは何なのかより引用。
REpresentational State Transferの略で、分散型システムにおける複数のソフトウェアを連携させるのに適した設計原則の集合、考え方のこと。Roy Fieldingが2000年に提唱した。
どうして使うのか
ユーザーのニーズにあった柔軟な検索を行うため。
こちらのサイトで分かりやすく説明されています。
第8回 Elasticsearchの基礎を学ぶ
昨今のWebサービスでは,以前のようにユーザが努力をして興味のあるコンテンツを探すサービスから,キュレーションサービスのようにユーザの興味を分析し配信することが重要とされています。
類似文書検索(More Like This Query)など、RDBには存在しない機能も提供できます。
RDBMSは条件にマッチしたデータを正確に返すのと比べ,Elasticsearchは条件との関係性の高いデータを返すという点があります。
Kibanaというデータ可視化ツールを使用すれば、ログ分析も可能です。
用語集
以下、第1回 Elastisearch 入門 インデックスを設計する際に知っておくべき事より。
Elasticsearchの
Index
は、物理的な要素である複数のShards
から構成されていて、そのShards
を複数のノード
に分散することで1つのIndex
に対するデータ量や書き込み速度を分散することができる仕組みになっています。
用語 | 説明 |
---|---|
Cluster | Nodeの集合体 |
Node | RDBのサーバに該当 |
Index | RDBのDatabaseに該当 |
Type | RDBのTableに該当 |
Document | RDBのRowに該当 |
Field | RDBのColumnに該当 |
Shard | Indexを物理的に分割したもの |
Primary Shard | 書き込み可能なShard |
Replica Shard | 読み取り専用のShard |
Typeはバージョン7.0より完全廃止されるそうです。
"タイプ"廃止へ。"タイプレス"が登場!
参考記事
第6回 Elasticsearch 入門 基本コンセプトを理解する
Elasticsearchで最初にぶつかるワードたち
Elasticsearchについて
Elasticsearch 一目で分かるアーキテクチャ
インストール
使用環境
- macOS Mojave 10.14.6
- Homebrew 2.1.16
インストールを実行
Elasticsearchを動かすにはJavaが必要です。
Java無しの状態でElasticsearchをインストールしようとすると、エラーが発生します。
$ brew install elasticsearch
elasticsearch: Java 1.8 is required to install this formula.
Install AdoptOpenJDK 8 with Homebrew Cask:
brew cask install homebrew/cask-versions/adoptopenjdk8
Error: An unsatisfied requirement failed this build.
そのため、先にJava開発キットJDK(Java Development Kit)
をインストールします。
先ほどのエラー表示に出力されていたコマンドを実行します。
$ brew cask install homebrew/cask-versions/adoptopenjdk8
Javaをインストールできました。
$ java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)
これでElacticsearchをインストールできます。
$ brew install elasticsearch
インストールが完了したら、Elasticsearchを起動します。
警告が出力されますが、自己解決しなかったのでこのまま進めました;
$ elasticsearch
OpenJDK 64-Bit Server VM warning: Cannot open file logs/gc.log due to No such file or directory
デフォルトで9200番ポート
が使われています。
ブラウザでlocalhost:9200
へアクセス、もしくは別にターミナルを起動してcurlコマンド
を実行すると起動を確認できます。
$ curl localhost:9200
次にKibanaをインストールします。
$ brew install kibana
起動します。
$ kibana
Kibanaはデフォルトで5601番ポート
が使われています。
ブラウザでlocalhost:5601
へアクセスすると起動が確認できます。