Help us understand the problem. What is going on with this article?

Elasticsearchで最初にぶつかるワードたち

More than 1 year has passed since last update.

Elasticsearchで最初にぶつかるワードの意味などをRDBに例えて覚えたので、それらを書いておく。
加えて3日ほどで覚えた知識も併せて書く。

対応表

Elasticsearch RDB 備考
index テーブル elasticはスキーマレスだがmappingというカラムの型情報がある
type 該当なし
document row 行データ
node DBサーバー 保存領域の数
shard データ保存の分割数。検索処理の並列数にも影響する
primary shard master 水平分割数
replica shard slave レプリケーション数

index と type

RDBのデータベースとテーブルの関係と書かれていることが多いが、Elasticsearch6ではindex(1) : type(1)、さらに将来ではtypeは削除されるかもしれないので、indexがテーブルに該当することとなる。

index名の付け方の考察

"(データ名)-yyyy.mm.dd" の形式が良いかと思われる。

  • logstash形式でデータを保存すると、indexが"logstash-yyyy.mm.dd"となる。kibanaもこの形式を標準にしている。
  • この形式だと日付パーテーションの役割も兼ねるので、n日以前のデータ削除としても使える。
  • "logstash-yyyy.mm.dd"ではなく"(データ名)"を先頭を付けるのは、日付パージの粒度をデータ毎に調整できるから。(日単位、週単位、月単位)
  • index作成後にshard(分割数)の変更ができないので、日単位でindexを作ると、後になって日毎のデータ量が増えてきた時に分割数を増やすことができる
  • Elasticsearchは利用するindexを前方一致で指定できるので、末尾に日付が付いていても人間の検索コストは増えない。RDBだとtableのpartitionを超えて検索するのに似ている。

nodeとshard

  • indexは複数のshardに分割することができる
    • データの水平分割
  • shardには primary(1) と replica(n) がある
    • master/slave構成
    • Elasticsearchではこの組をレプリケーショングループと呼ぶ
  • nodeの中に複数のshardを格納することができる
    • 1つのnodeには primary shard と 対となるreplica shard を同時に置けない
    • この制約があるのでprimary数 + replica数 <= node数とする
    • 1つのnodeに複数のprimary shardを配置できるので、上の例だとnode上に2個のpraimaryがあると破綻する。
    • replica数 < node数が正しい
  • primary shardの数はindex作成時から変更できない
    • コンテンツが成長したらデータ数が増えるので、shard数も増やせるように日付indexが良いと思う
    • replicaは後から変更できる

nodeとshardの配置例題(RDB風の説明付き)

primary shard = p
replica shard = r
と省略します

  • レプリケーション master(1) : slave(1)
index node shard
index node1 p1
node2 r1
node3 (空き)
  • レプリケーション master(1) : slave(2)
index node shard
index node1 p1
node2 r1
node3 r2
  • 水平分割 master(2) : slave(0)
index node shard
index node1 p1
node2 p2
node3 (空き)

とか

index node shard
index node1 p1 p2
node2 (空き)
node3 (空き)
  • レプリケーション master(1) : slave(1) + 水平分割(2)
index node shard
index node1 p1 p2のr1
node2 p2 p1のr1
node3 空き

とか

index node shard
index node1 p1 p2のr1
node2 p2
node3 p1のr1
  • レプリケーション master(2) : slave(2) + 水平分割(2)
index node shard
index node1 p1 p2のr1
node2 p2 p1のr1
node3 p1のr2 p2のr2

読んでよかったもの

a4_nghm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away