今日はElasticsearch: The Definitive Guideを読んでいて怖いと思ったところについて書く。
学びがあったのはAvoiding Type Gotchasという部分。これによると、同一のindexを使っていて別のtypeで定義していたとしても、Luceneからはindex単位でフラットに定義があるように見えるらしい。なので、別々のtypeだけれど、同じfield名で定義していて、かつそのfield名のデータ型がそれぞれのtypeで異なっているとき、コンフリクトが起こってしまうみたい。
直感的には、typeが名前空間となり、field名は完全に独立しているというふうに思いがち。変にハマる可能性があるので覚えておく。
ちなみにParent-Childなどを利用しないなら、1 index 1 typeがオススメのようだった。
Avoiding Type Gotchasって章、厳しい感じする / “Types and Mappings | Elasticsearch: The Definitive Guide [2.x] | Elastic” https://t.co/bquANpT1bL
— 柴崎優季 (@shiba_yu36) 2016年8月2日
?
— Jun Ohtani (@johtani) 2016年8月2日
別のtypeでも同じフィールド名を使って、別の定義をするとコンフリクトするという認識ですがあってますか?
— 柴崎優季 (@shiba_yu36) 2016年8月2日
あってます。1インデックス1タイプがオススメです。Parent-Childの場合を除きますが。
— Jun Ohtani (@johtani) 2016年8月2日