typeは似たようなデータの識別子であって、DBのテーブルほど型に厳密ではないようです。
同じindex、違うtypeで同じ名前のfieldを使う場合、
- A typeのpriceは数字(1000)
- B typeのpriceは文字列(1,000円)
みたいなことはできないようです。
あくまで概念的にはtypeはテーブルに近いけれど、完全に同じと思って扱ってはならないと。
以下、私と@johtaniさんのツイッターでのやりとり。
indexはDBで、typeはテーブルみたいなもの、という説明なのに、まるでテーブルのようにindexを作るサンプルしか見つからなくて困った。俺の探し方が悪いのかもしれんが…。それともRails界隈でElasticsearch使うときはそうしようってことなんかな?
— 尾古 豊明(パトラッシュ) (@patorash) 2015, 7月 1
@patorash 概念的な説明なので。typeはラベルやタグのようなものと考えてもらう方が良いです
— Jun Ohtani (@johtani) 2015, 7月 1
@johtani 実際にはdocumentの内容はごちゃまぜだけれどぱっと見分けるためのタグがtype、という扱いということですか。indexに対してtype頼みdocumentを入れていくと問題が発生しやすいとかですか?
— 尾古 豊明(パトラッシュ) (@patorash) 2015, 7月 2
@patorash たとえば、インデックスの違うタイプで同じ名前のフィールドだと、数値と文字列はNGです。 https://t.co/YVkVdlBad6
— Jun Ohtani (@johtani) 2015, 7月 2
@johtani ああ〜、なるほど。じゃあ似たようなデータ形式のものをdocumentに登録する際にだけ、識別子としてtypeが役に立つくらいで、テーブルほど厳密に型持てないってことですね。
— 尾古 豊明(パトラッシュ) (@patorash) 2015, 7月 2
@patorash ですね。タイプだけ消すとかも難しいですし
— Jun Ohtani (@johtani) 2015, 7月 2
@johtani ありがとうございました。ようやく理解できました。
— 尾古 豊明(パトラッシュ) (@patorash) 2015, 7月 2