64
54

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 5 years have passed since last update.

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

Last updated at Posted at 2018-02-23

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|

読んでよかったもの

64
54
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
64
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?