Skip to content

Instantly share code, notes, and snippets.

@eiichi-worker
Last active February 13, 2018 18:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eiichi-worker/9bfc5b8272e964a458a622285d8c6577 to your computer and use it in GitHub Desktop.
Save eiichi-worker/9bfc5b8272e964a458a622285d8c6577 to your computer and use it in GitHub Desktop.
Elasticsearchについて(6.0系)メモ

Elasticsearchについて(6.0系)

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の違い

IDをこちらで決める場合、フォーマットによってPerformanceが変わるので注意する。 UUID v4より Zero-pad sequentialなIDのほうが4倍早いよって記事もある(ちょっと古いけど)
Changing Bits: Choosing a fast unique identifier (UUID) for Lucene

参考

これでざっくり把握する

インデックスとタイプについて

そのた

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment