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
Tweet

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が高くなる