0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Elastcisearch 7X からElasticsearch-headまで

Last updated at Posted at 2021-07-07

Elastcisearchとは

①Elasticstackのメイン部分(心臓の部分)
②主流検索エンジン
③オープンソース
④データーの保存、分析の仕事をする
⑤早すぎる
⑥RESTful インターフェースを使って操作できる
⑦luceneを基づいた開発されたもの(Elasticsearchインストール後、/etc/elasticsearch/libの中身覗いてみたら、Luceneがあることを確認できる。)

Elastcisearchどこで使われる

ユースケースをご紹介します。

  • 検索ボックス(アプリでもウェブでも)
  • ログ、メトリックなどのデーターを保存し、分析する
  • 機械学習を使用して、データの動作をリアルタイムで自動的にモデル化する
  • 保存エンジンとして使う
  • 地図情報分析する

検索エンジンの比較(Lucene、Solr、Elasticsearch)

  • Lucene

検索ライブラリ、オープンソースであるため、世界中に認められたもっとも高性能の検索ライブラリである。現在知ってる限り一番高性能な検索エンジン。

  • Apacche Solr

Apache Luceneに基づいたオープンソース、検索プラットフォーム、Web-serviceAPIを提供する、積極的にバージョンアップしない。Json、XML、CSVをサポートする。昔からのサービスでユーザーが多い、勉強コストが少ない

  • Elasticsearch

Apache Luceneに基づいたオープンソース、検索プラットフォーム、REST FULL Apiを提供する、Solrより拡張簡単、クラスタ組むのが簡単、Jsonだけサポート、月一のペースでバージョンアップして、それを維持するための知識を持つエンジニアが少ない、トラブルシューティングにそれなりのスキルが求められる。

上記以外にSolrとElasticsearchを比べてみようにも参照してみてください。

なんでElasticsearch使う

Luceneはただのライブラリーである。それを使うのにjavaのプログラムに組み込まれなければいけません。かつ検索に対して知識を持たなきゃ、Luceneを使うのになかなか難易度が高い。

上記の問題を解決する為に、elasticsearchが誕生された。

ダウンロード&インストール

ホームページから必要な環境に応じてダウンロードしてください。
ダウンロードとインストールについてたくさん記事があるので、ここでは省略します。
私が使用する環境は以下通り

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 8.3.2011

動作確認①

[root@localhost ~]# curl http://localhost:9200
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "5DyhRe1RQiSml_rErADF_Q",
"version" : {
"number" : "7.12.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7",
"build_date" : "2021-04-20T20:56:39.040728659Z",
"build_snapshot" : false,
"lucene_version" : "8.8.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

動作確認②

ブラウザで確認する
install.PNG

余談

以下の設定は必須ではないので、あくまで必要に応じて設定してください。

Elasticsearchのヒープサイズ

ヒープサイズが大きければ大きいほど、キャッシュメモリが多くて、早いらしいです。
私の場合4gを512mにした。

# vi /etc/elasticsearch/jvm.options
-Xms*** → 調整
-Xmx*** → 調整
# systemctl restart elasticsearch → 設定反映する

ディフォルト値は4gで、必要な場合調整してみてください。
image.png

仮想メモリサーズ

# vi /etc/sysctl.conf
vm.max_map_count=262144  → 必要なサイズを追記
# sysctl -p   → 設定反映する

elasticsearch-headの導入

ESのオフィシャルにはGUI特に提供されてないため、elasticsearch-headプラグインはそれを解決し、GUIでも見れるようになる。

elasticsearch-headのソース

githubにあるので、↓から入手できる。

インストール方式

全部で四種類の方式でインストールできそうで、今回はnpmでインストールする。
他にChromeプラグインのインストールでもできるので、そちらも推奨します。

# git clone git://github.com/mobz/elasticsearch-head.git
# cd elasticsearch-head
# npm install
# npm run start

動作確認

ブラウザで http://xxx.xxx.xxx.xxx:9100 を入力
一応表示されてるが、つながってないようです。
キャプチャ.PNG

設定ファイル編集

# vi etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true → 追記
http.cors.allow-origin: "*" → 追記
# systemctl restart elasticsearch → 設定反映のため再起動

キャプチャ.PNG

できたようです

再度確認

http://xxx.xxx.xxx:9200/_cluster/health?pretty=true にアクセスする

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

statusがgreenになってますね。
これで完成です。

つまずいたら他のインストール記事にも参照してください。

Elasticsearchの基本概念

ではいよいよ本番に入りたいと思いますが、その前に公式サイトに基本キーボードの概念が紹介されたが、理解した上で進めた方が良いですが、残念ながら、読んでも意味わからなかった。ここで改めて各キーワードに対して簡単に説明したいと思います。

リアルタイム
文字通り
ノード
Elasticsearch Serverのことを指します。
クラスタ
クラスタはデータ全体を一緒に保持する1つ以上のノード(サーバー)のコレクション、elasticsearchを用いて検索する時にトラフィック当然発生する。トラフィックを分散させるため、通常何台もelasticsearch serverが必要ですね。複数のノード、つまりサーバー群 (Elasticsearch Server) のことはクラスタといいます。
インデックス
データを保存する場所。名前通り索引です。複数持つことができて、中に検索対称のドキュメントを格納する。
タイプ
RDBと言ったら、テーブルに相対する。インデックス内に1つ以上のタイプを定義できる。タイプの目的によって、格納するデーター(ドキュメント)が違う。
ドキュメント
RDBと言ったら、レコードに相対する。データー実態そのものです。検索の最小単位はドキュメント
シャード
インデックスを分割したもの、分割後二種類があります。プライマリーシャード(Primary Shard)とレプリカシャード(replica shard)がある。例えば、分散のため、もしくは障害時でも対応できるため、データーベースを分散して作る必要がある。そのデーターバースのコピーもとはプライマリーで、データーの更新などをやってる。複製のDBはレプリカという、プライマリーをコピーするだけやってる。

タイプはバージョン8から廃止する予定だそうで、理解しなければ飛ばしてよいです
それぞれの関係は以下の表を見て理解しやすいと思います。
index2.PNG
そのほかには下のような図もあって、理解するように頑張ってください。
index.png

ElasticsearchとDBの比較

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices   -> Types  -> Documents -> Fields
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?