Index作成時のtype指定について

Elasticsearchはver7.0からタイプレスAPIになったということで、
index一つに付き一つのtypeしか許容されない認識ですが、
https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.html#_custom_type_field
↑この記事のCustom type fieldの項目を読むと

PUT twitter
{
"mappings": {
"user": {
"properties": {
"name": { "type": "text" },
"user_name": { "type": "keyword" },
"email": { "type": "keyword" }
}
},
"tweet": {
"properties": {
"content": { "type": "text" },
"user_name": { "type": "keyword" },
"tweeted_at": { "type": "date" }
}
}
}
}

のようにtypeをtweetとuserの2つで設定しているように見受けられるのですが、どういうことでしょうか?
index作成時にmappingやsettingを行う際に複数のtypeを指定していれば許容され、指定せずにindexを作成した場合は自動で内部的に扱っている_docがindexのtypeとして適用され、以後indexに格納するデータは_docタイプのみしか許容しなくなるということなのでしょうか?

提示された箇所は、「タイプを複数利用していたとき、どのように変更できるか」の例示で
7.xのタイプレスになる前の、従来の設定を示している箇所かと思います。

You can achieve the same thing by adding a custom type field as follows:

と書かれた以降が、じゃあタイプレスの7系ではどうやって書けるのか、という具体例になっています。

特に注釈1~4で示されているYou can achieve the same thing by adding a custom type field as follows: と書かれたところですね。

ですので、タイプという概念はなくなり、_docを使うということ、
従来の_typeの使い方をしたいのであれば、それを表すフィールドを1つ定義しましょうという理解で良いのではないかと思います。

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.