Elasticserach - 2

Elasticsearchの実際のシステム構成



・ノード種別
Elasticsearchには、全部で5種類のノード種別がある。
1台で複数の属性をもたせることも、1つの属性のみをもたせることもできる。
- Master
- Data
- Ingest
- Coordinating only
- Machine Learning
デフォルトでは、各ノードは5つの役割をすべて持つようになっている。
台数が増えてくると役割を分離して、専用ノードを構成することが有効になる。

・Masterノード
Elasticsearchクラスタは、必ず1台のMasterノードをもつ必要がある
Masterノードはクラスタの管理を行う。
- ノードの参加と離脱の管理
- クラスタメタデータの管理 : クラスタ内のノード構成情報、インデックスやマッピングに関する情報など
- シャードの割当と再配置
デフォルトでは、複数のノードのすべてがMaster-eligibleノードであり、Masterノードの候補になる。
Masterノードを一つにするには、Masterノード以外のnode.masterをfalseにする。

・Dataノード
データの格納、クエリへの応答、Luceneインデックスファイルのマージなどの管理を行う。
Masterノードと同じく、デフォルトではすべてのノードがDataノードの役割を持っている。

・Ingestノード
データの変更や加工を行う。
pipelineを定義し、クライアントから送られたデータを前処理したあとDataノードに渡す。

・Croordinating onlyノード
クライアントから受け付けたリクエストのハンドリングを行う。
クライアントがドキュメントをインデックスに格納する場合、格納対象のシャード番号を決定し、そのシャード番号を保持したDataノードにルーティングを行う。

・Machine Learningノード
オプション機能の機械学習を扱うノード



REST APIによる操作

・リクエス
- APIエンドポイント : Elasticsearchサーバへアクセスする際のURI
インデックスの管理 : http://<サーバ名>:9200/<インデックス名>/
ドキュメントの管理 : http://<サーバ名>:9200/<インデックス名>/_doc/<ドキュメントID>
クラスタの管理 : http://<サーバ名>:9200/_cluster
ノードの管理 : http://<サーバ名>:9200/_nodes
- HTTPメソッド : APIエンドポイントへの操作の種別
GET : リソースの取得
POST : リソースの作成
PUT : リソースの更新、作成
DELETE : リソースの削除
HEAD : リソースのメタデータの取得

$ curl -XPUT 'http://localhost:9200/my_index/_doc/1' \
-H 'Content-Type : application/json' -d '
{
  "user_name" : "Yamada Taro",
  "date" : "2020-09-02T22:01:30",
  "message" : "Test"
}'

 
・レスポンス
- HTTPステータスコード
200 : OK
201 : Created → Documentの登録に成功
401 : Unauthorized → 認証エラー
404 : Not Found → 指定したリソースが存在しない
409 : Conflict → 登録しようとしたリソースがすでに存在している
500 : Internal Server Error → サーバの処理エラー
など
- レスポンスメッセージ
レスポンスボディ部分にJSONフォーマットでレスポンスメッセージが返される。