# バージョン6系への移行について

**URL:** <https://discuss.elastic.co/t/topic/142302>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [July 31, 2018, 7:59am UTC](https://discuss.elastic.co/t/topic/142302 "2018-07-31T07:59:52Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Skane](https://avatars.discourse-cdn.com/v4/letter/s/bbe5ce/32.png) [@Skane](https://discuss.elastic.co/u/Skane)\
**Post date:** [July 31, 2018, 7:59am UTC](https://discuss.elastic.co/t/topic/142302/1 "2018-07-31T07:59:52Z")

</div>

Elasticsearch6系を使用した場合のIndexの扱いについて困ったことが出て来ました。  
現状、Elasticsearch5.6系を使用しておりまして、今後6の最新バージョンに移行を検討している段階でおります。

そのときに懸念事項が出てきてしまいまして、  
6系以降からtypeの概念をなくそうとしているとのことですが、  
現状、色々なフィールドを自由に組み合わせてmapping定義が追加されていくようなサービスを使っておりまして、  
mapping定義が今後数千に増えていく可能性が出てきてしまいました。  
それに伴い6系に移行したときIndexの数も数千になってしまうのではと懸念しております。  
メモリを増やすか、ノード数を増やすといった対応方法があるかもしれませんが、コストに見合ったサービス提供ができなくなってしまいます。  
mapping定義が数千個になってもサービス提供ができるよい方法は何かあるのでしょうか？  
それともmapping定義が数千になるようなサービスはElasticsearchには向いていないのでしょうか？  
ご教授のほどよろしくお願いいたします

---

<div class="post-metadata">

**Author:** ![r4-keisuke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/r4-keisuke/32/9268_2.png) [@r4-keisuke](https://discuss.elastic.co/u/r4-keisuke)\
**Post date:** [July 31, 2018, 10:07am UTC](https://discuss.elastic.co/t/topic/142302/2 "2018-07-31T10:07:55Z")

</div>

現状は同一indexの複数の\_typeを指定して使われてたと思われますが、あってますでしょうか？

\_typeの概念をなくすだけで、indexやmappingを増やして行く理由はないと思います。  
お使いのサービスが運用されてるものかどこかのツール的なものなのかは存じませんが、  
基本的に\_typeの部分は一つのindexの中でfieldにtypeを区別するfieldを置くことで代替できると思ってます。  
クエリで条件として該当のfieldにtermなりを追加する必要はありますが。

mappingを数千持つというのがうまく想像できませんが、  
\_typeの種類が数千ということでしょうか？

---

<div class="post-metadata">

**Author:** ![Skane](https://avatars.discourse-cdn.com/v4/letter/s/bbe5ce/32.png) [@Skane](https://discuss.elastic.co/u/Skane)\
**Post date:** [July 31, 2018, 11:00am UTC](https://discuss.elastic.co/t/topic/142302/3 "2018-07-31T11:00:15Z")

</div>

ご回答ありがとうございます  
説明不足で申し訳ありません

現状は、同一Index内に複数の\_typeを指定されており、  
5.6のバージョンでこのまま運用し続けた場合、\_typeが数千に膨れてくると想像しています

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [July 31, 2018, 12:50pm UTC](https://discuss.elastic.co/t/topic/142302/4 "2018-07-31T12:50:56Z")

</div>

こちらはご確認済みでしょうか？

> **[Removal of mapping types in Elasticsearch 6.0](https://www.elastic.co/blog/removal-of-mapping-types-elasticsearch)**
>
> Mapping types are going away. Elasticsearch 6.0 supports a single mapping type per index only, and it represents the first step on the way to removing types altogether.

Alternatives to mapping typesで、2通りの代替案が提示されています。

- Custom type field
- Index per document type

どのような使われ方をしているか、具体的な例があれば想定しやすいのですが、  
同一のindexで異なるTypeでも、同じフィールド名で異なる型は持てないと思いますので、  
どんどんmappingが増えていく、ということは無いように見えます。  
\_typeフィールドに変わる代替のフィールドを用意する @r4-keisuke さんの方法で良さそうに思います。

↓ こういう複数のTypeの利用例ではないと想定（mapping作成時にエラーになる）

| index | type | field | 型 |
| --- | --- | --- | --- |
| testindex | hoge | field1 | text |
| testindex | bar | field1 | integer |

---

<div class="post-metadata">

**Author:** ![r4-keisuke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/r4-keisuke/32/9268_2.png) [@r4-keisuke](https://discuss.elastic.co/u/r4-keisuke)\
**Post date:** [July 31, 2018, 2:15pm UTC](https://discuss.elastic.co/t/topic/142302/5 "2018-07-31T14:15:53Z")

</div>

なるほどですね。  
それなら、fieldの数にもよりますが、むしろ良くなりそうなイメージがありますがどうでしょうか。

\_typeを使わないで、どんなdocumentなのかだけtype的なfieldを用意しておけば、  
type fieldの種別は数千どころか数十万があっても問題はないですよね。  
`{"type": {"type": "keyword"}}`  
的な感じで、中身は書きたい放題ですので。

で、実際のindexのmappingとしては上記のtypeとなにかidになりそうなfield以外は、  
scheme lessを生かして入れたいものはmapping意識せずにid, type fieldだけ守りながら入れてしまえば、  
実質一つのindexの中にたくさんの種類のdocumentが共存可能になります。

fieldの組み合わせのパターン数が数千に行く形だと思うのでfield数もかなり多いと思いますが、  
多分一つのindexで1000fieldまでがデフォルトだったような気がしますし。

[https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#mapping-limit-settings](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#mapping-limit-settings)

ここにはそう書いてありますね。参考にしてくださいー

---

<div class="post-metadata">

**Author:** ![Skane](https://avatars.discourse-cdn.com/v4/letter/s/bbe5ce/32.png) [@Skane](https://discuss.elastic.co/u/Skane)\
**Post date:** [August 1, 2018, 3:52am UTC](https://discuss.elastic.co/t/topic/142302/6 "2018-08-01T03:52:15Z")

</div>

@r4-keisuke さん @tsgkdt さんご回答ありがとうございました。  
色々理解が足らず申し訳ございませんした。  
おそらく下記のようにしておけば問題ないということが理解できました。

現バージョン5.6

> {  
> &nbsp;&nbsp;"index\_name"  
> &nbsp;&nbsp;&nbsp;&nbsp;"mappings" : {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type\_A" : {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"properties" : {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name" : {"type" : "text"},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age" : {"type" : "integer"},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type\_B" : {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"properties" : {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name" : {"type" : "text"},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"picture" : {"type" : "text"},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...  
> }

バージョン6以降

> {  
> &nbsp;&nbsp;"mappings": {  
> &nbsp;&nbsp;&nbsp;&nbsp;"doc": {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"properties": {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type": { "type": "keyword" },  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name": { "type": "text" },  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age": { "type": "integer" },  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"picture" : {"type" : "text"},  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
> &nbsp;&nbsp;&nbsp;&nbsp;}  
> }

また、フィールドの数だけ1,000を超えないように気をつけて、超える場合は別のIndexを利用するようにしたいと思っています。  
ありがとうございました

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 29, 2018, 3:52am UTC](https://discuss.elastic.co/t/topic/142302/7 "2018-08-29T03:52:33Z")

</div>

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