Elastic Co.が開発している全文検索エンジン。 OSS
全文検索エンジン Apache Lucene(るしーん)ベース 友達、Apache Solr
インデックス ≒ テーブル
マッピングタイプ ≒ カラムのまとまり
ドキュメント ≒ 行
マッピングタイプ ≒ テーブル という説も多く見かけるが個人的にはしっくりこない。
Luceneはスパースなインデックスを効率良く圧縮できない。修正によって緩和されるらしいが、やはり同一インデックスに大きく異なるタイプのドキュメントの格納は効率が悪い。
引用: Elasticsearch メモ — 鱒身(Masu_mi)のブログ ※ スパース:疎行列 空からむが多い状態
5.6
index.mapping.single_type パラメータに true を設定することで、一つのindexに一つのtypeのみの制限をかけることができる
join field が利用可能になる
6.x
5.xで作成したindexでは引き続き複数のtypeが利用可能
6.xで作成するindexは単一のtypeのみ
7.x
クエリ時のtypeパラメータが必須ではなくなる
引用: Elasticsearch5.6や6.xでjoinを利用する方法 – ニフティものづくりブログ
Cluster:ノードの集まり
└ ノード: ≒ サーバー
└ シャード:インデックスの物理的な配置
└ Replica:リードオンリーなシャードのコピー
5.5では、親子関係(Parent-Child Relationship)というのがある。 同じインデックス内で、別タイプを作りparentフィールドに親のIDを指定する
6.0では、親子関係(Parent-Child Relationship)はなくなり、join datatypeが追加。 6.0以降では、複数タイプが非推奨または禁止となるため、同じタイプ内で親子関係を表現
このあたりは以下の記事を参照
IDをこちらで決める場合、フォーマットによってPerformanceが変わるので注意する。
UUID v4より Zero-pad sequentialなIDのほうが4倍早いよって記事もある(ちょっと古いけど)
Changing Bits: Choosing a fast unique identifier (UUID) for Lucene
これでざっくり把握する
インデックスとタイプについて
そのた