【Elasticsearch】初心者メモ〜概念から起動まで


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へアクセスすると起動が確認できます。