Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elasticsearch

Avatar for KangSangUn KangSangUn
October 07, 2019

 Elasticsearch

by ogidow
GMOPEPABO

Avatar for KangSangUn

KangSangUn

October 07, 2019

More Decks by KangSangUn

Other Decks in Programming

Transcript

  1. 論理的な概念 • Index ◦ Document を保存する場所。RDBで言う所のデータベース • Type ◦ Document

    群の構造を表す概念。 RDBで言う所のテーブル ◦ v6.x から非推奨で、v7.x から廃止 • Document ◦ 1つの文書の単位。 RDBで言う所のレコード • Field ◦ Document内の key 及び value の組。RDBで言う所のカラム
  2. 物理的な概念 • Node ◦ Elasticsearchが動作するサーバのこと • Cluster ◦ Elasticsearchでは複数のNodeを起動すると互いに強調しあい、自律的に Node同士でグループを

    作る ◦ このグループのことを Clusterと呼ぶ • Shard ◦ Elasticsearch では Index のデータを複数に分割し、複数の Nodeに分散配置することで検索性能 を担保しています。 ◦ この分割されたデータを Shard(Primary Shard) と呼びます • Replica ◦ Shardに対して複製を作成し、 Shard が配置されている Node とは別の Nodeに配置することで、高 可用性を実現しています ◦ Shard のことを Replica(Replica Shard) と呼びます
  3. Cluster Node1 Node2 Node3 Primary Shard 1 Replica Shard 1

    Primary Shard 2 Replica Shard 2 Primary Shard 3 Replica Shard 3
  4. Cluster Node1 Node2 Node3 Primary Shard 1 Replica Shard 1

    Primary Shard 2 Replica Shard 2 Primary Shard 3 Replica Shard 3 障害!!
  5. Cluster Node1 Node2 Node3 Primary Shard 1 Primary Shard 1

    Primary Shard 2 Replica Shard 2 Primary Shard 3 Primary Shard 3 障害!!
  6. Cluster Node1 Node2 Node3 Primary Shard 1 Primary Shard 1

    Primary Shard 2 Replica Shard 2 Primary Shard 3 Primary Shard 3 障害!! Replica Shard 1 Replica Shard 3
  7. Node の種類 • Master(Master-eligible) Node ◦ Cluster に参加している Node の管理やシャードの割当など

    Cluester の状態の管理を行う ◦ Master Node はCluster に 1台のみ存在する。既存の Master Node が死んだ場合自動で次の Master が選出される。Master Node 候補となるNode を Master-eligible Node と呼ぶ • Data Node ◦ データの格納・クエリの応答などを行う Node • Coordinating Node ◦ クライアントから受け付けたリクエストのハンドリングを行う Node ◦ デフォルトで全ての Node がこの役割を持っている
  8. Master Node の選定 • Master-eligible の中から選出されたNodeがクラスタのリーダとしてクラスタの状態 の管理を行う • Cluster が動作するには必ず

    Master Node が必要。Master Node が停止しても Cluster が動作し続けるために複数台の Master-eligible Node を稼働させること が望ましい • Master Node を選出するには 「discovery.zen.minimum_master_node」で設定し た値以上のMaster-eligible Node が必要 • しかし、Master-eligible Node は奇数台で構成しないと スプリットブレインと呼ば れる問題が発生する可能性がある。
  9. Cluster Node 1 Node 2 Load Balancer 更新1 更新1 •

    更新1はnode1のcluster に適 用
  10. Cluster Node 1 Node 2 Load Balancer 更新2 更新2 •

    更新1はnode1のclusterに適 用 • 更新2はnode2のclusterに適 用
  11. Cluster Node 1 Node 2 Load Balancer 更新2 更新2 •

    更新1はnode1のclusterに適 用 • 更新2はnode2のclusterに適 用 Cluster データの不整合が発生!!
  12. query と filter • search api のDSLとして query と filter

    が存在する • queryはスコアに影響して、filter はスコアに影響しない ◦ スコアは後述する検索結果のソートに利用される • 「ピアス」に適合したdocumentを検索しつつ、カテゴリは「アク セサリー」で絞りたいと言った場合に「ピアス」をqueryで「アク セサリー」をfilter で絞ったりする
  13. term と match • term を使った場合検索クエリは Analyzer を通過し ない •

    match を使った場合検索クエリは Analyzer を通過 する
  14. TF-IDF • TF(Time Frequency) ◦ ある文書にあるトークンが現れた回数 ◦ 同じ文書の中にトークンが現れる数が多ければTFは高く なる •

    IDF(Inverse Document Frequency) ◦ 全ての文書のうち、あるトークンが現れる文書の逆数 ◦ あるトークンが一部の文書にのみ現れるトークンの場合は IDFが高くなる