# 検索のドキュメントとそのサジェストのドキュメントについて。

**URL:** <https://discuss.elastic.co/t/topic/165742>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [January 25, 2019, 9:58am UTC](https://discuss.elastic.co/t/topic/165742 "2019-01-25T09:58:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarketVS](https://avatars.discourse-cdn.com/v4/letter/m/b9e5f3/32.png) [@MarketVS](https://discuss.elastic.co/u/MarketVS)\
**Post date:** [January 25, 2019, 9:58am UTC](https://discuss.elastic.co/t/topic/165742/1 "2019-01-25T09:58:56Z")

</div>

Elasticsearch を使ってメインの検索とそのサジェストを作るときは同じindex以下にメインの検索のtypeとそのサジェストのtypeの２つtypeを作るか、あるいはメインの検索のindexとそのサジェストのindex、合わせて２つindexを作ることが考えられるのですが、ユースケースによるでしょうが、多くの場合どちらの方が一般的かつ、最適でしょうか。  
宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![j-yama](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/j-yama/32/38601_2.png) [@j-yama](https://discuss.elastic.co/u/j-yama)\
**Post date:** [January 27, 2019, 5:02am UTC](https://discuss.elastic.co/t/topic/165742/2 "2019-01-27T05:02:23Z")

</div>

この質問をされるということは、恐らくMarketVSさんはElasticsearch 5.x以前をお使いだと思うのですが、Elasticsearch 6.0.0以降では同じindexに複数のtypeを作成することができなくなっています。

[https://www.elastic.co/guide/en/elasticsearch/reference/6.5/removal-of-types.html](https://www.elastic.co/guide/en/elasticsearch/reference/6.5/removal-of-types.html)

したがって、

- 同じindex以下にメインの検索のtypeとそのサジェストのtypeの２つtypeを作る
- メインの検索のindexとそのサジェストのindex、合わせて２つindexを作る

の2つの選択肢があるとき、現在の最新バージョンでは後者しか実現することができません。仮に過去のバージョンをお使いだったとしても、バージョンアップのしやすさなどを考えて後者にすることをオススメします。

...と、ここまで書いていて思ったのですが、`_type`フィールドを使うのではなくて、独自の`type`フィールドを作成して運用していくイメージでしょうか？  
このあたり検索に詳しい人が来てくれると嬉しいですね。(私は検索は詳しくないので、もしかしたら…ということで、制約の話だけ書き残していきます。)

---

<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:** [January 27, 2019, 1:10pm UTC](https://discuss.elastic.co/t/topic/165742/3 "2019-01-27T13:10:07Z")

</div>

こんばんはー

@j-yamaさんから検索やってる人を呼ばれた気がしたので。。。

主に飲食店の店名検索で実運用を行ってる私の経験に基づく事例としてですが、  
ご参考いただければと思います。

検索用Indexとサジェスト用のIndexは分けたほうが良いと思います。

同じIndex内での異なるtypeだとしても同じfield名では同じdata typeの設定出ないといけないので、  
検索とサジェストには同じデータに対するsearchクエリを投げるとしてもanalyzerの設定などをそれぞれ別途設定したいことが多いので、不自由で分離したくなります。

もっと言うと、トラフィックが結構あるのであれば、  
クラスターも分けて  
サジェスト用クラスターはレスポンスやスループットに重みをおいた設計にして、  
検索用クラスターは大量のデータや複雑なスコアリングに対応できる設計にします。

クラウド上でしたら使うインスタンスタイプやSSD/NVMeなども変わってくるかもしれませんね。

なので私はindexは分ける、クラスターもかなりトラフィックがあるのであれば、できれば分ける運用が良いと思ってます。

---

<div class="post-metadata">

**Author:** ![MarketVS](https://avatars.discourse-cdn.com/v4/letter/m/b9e5f3/32.png) [@MarketVS](https://discuss.elastic.co/u/MarketVS)\
**Post date:** [January 28, 2019, 2:06pm UTC](https://discuss.elastic.co/t/topic/165742/4 "2019-01-28T14:06:31Z")

</div>

上記お二方、ご回答ありがとうございます。  
おっしゃる通りで、Elasticsearch最新版は複数のtypeをサポートしていないことに加え、indexのanalyzerも検索とサジェストで異なるものになってくると思うので、indexは分けた方が良いですね。

elastic cloudの利用を検討していますが、上記の限りですと、インスタンスタイプに関しては、検索とサジェストとも、下記url内の3. Optimize your deployment のところの"I/O Optimized"の選択になりますでしょうか。  
[https://cloud.elastic.co/pricing](https://cloud.elastic.co/pricing)  
また、日本語のサジェストの実装関しては、良質と言えるような記事が、

> **[Elasticsearch キーワードサジェスト日本語のための設計 – Hello! Elasticsearch. – Medium](https://medium.com/hello-elasticsearch/elasticsearch-%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%82%B5%E3%82%B8%E3%82%A7%E3%82%B9%E3%83%88%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%A8%AD%E8%A8%88-352a230030dd)**
>
> Google に代表される「キーワードサジェスト」機能を Elasticsearch を前提に日本語向けに設計。

  
くらいしか探すことができなかったのですが、2015年12月の記事ということで、情報が少しばかり古いということが懸念です。Elastic search内部の機能でもサジェストはフォローされているようですが、日本語に関してはまだ弱いという認識を持っております。みなさまはどういった資料を参考にして、日本語のサジェストを行なっているのでしょうか。参考情報などご存知であれな、できれば教えていただきたく思います。宜しくお願い致します。

---

<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:** [January 28, 2019, 3:24pm UTC](https://discuss.elastic.co/t/topic/165742/5 "2019-01-28T15:24:49Z")

</div>

基本はKidoさんの内容で問題ないです。  
日本語サジェストでは本当にいい内容ですし、多く変わってないと思います。  
おっしゃる通り、Completion Suggesterとかで日本語をどうサジェストするかはあんまりノウハウがないように思えますので、analyzerと検索クエリの組み合わせ、field構成＝データ設計など用いてサジェストを作ってます。

私の事例でもよろしければ参考にしていただければと思います。

> **[ElasticsearchでRettyのサジェスト検索を作ったときの苦労話 - Qiita](https://qiita.com/r4-keisuke/items/391da271591ee6d62fde)**
>
> この記事は\[Retty Inc. Advent Calendar 2017\](https://qiita.com/advent-calendar/2017/retty) 14日目です。
> 
> こんにちは！Rettyで検索を担当している@r...

---

<div class="post-metadata">

**Author:** ![MarketVS](https://avatars.discourse-cdn.com/v4/letter/m/b9e5f3/32.png) [@MarketVS](https://discuss.elastic.co/u/MarketVS)\
**Post date:** [January 29, 2019, 10:03am UTC](https://discuss.elastic.co/t/topic/165742/6 "2019-01-29T10:03:58Z")

</div>

ご返信ありがとうございます。  
それでは、サジェストはKidoさんのものをベースとしつつ、ご提示していただいた資料も参考にさせていただきたいと思います。

---

<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:** [February 26, 2019, 10:03am UTC](https://discuss.elastic.co/t/topic/165742/7 "2019-02-26T10:03:59Z")

</div>

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