2016-08-30 8 views
1

私はElasticsearchサービスを開発しています。サポートチケットポータルとフォーラムのようなソースが複数あります。現在、私はそれぞれのソースが子の型を持つので、それ自身のインデックスに各ソースを分けています。チケットポータルではもちろんチケット(ネストされた返信を含む)を検索するだけでなく、ポータルインデックスの下に複数のタイプがあるので、検索ユーザーなども含みます。これまでの単純なもの。Elasticsearchでインデックスを使用するか、タイプフィールドを使用する

しかし、両方のソースを検索したいと思っているので、インデックスをマージして型の前にプレフィックス(portalTicket、portalUser、forumThread、forumUserなど)を付けることを考え始めていますが、それらをすべて一緒に戻してください。私はここに、小さな開始するために、現時点ではチケットやスレッドで働いている私は、これまで使用しています2つの最も単純なマッピングは、次のとおりです。

{ 
    ticket : { 
     properties : { 
      replies : { 
       type : 'nested' 
      } 
     } 
    } 
} 

{ 
    thread : { 
     properties : { 
      posts : { 
       type : 'nested' 
      } 
     } 
    } 
} 

は、私は違うとネストされたオブジェクトを使用しています表示するにはそれを見せたかったです名前。私はもちろん同じ名前を持つことができますが、ネストされた型でもあるチケットとスレッドのマッピングに付随する他のメタデータもあります。インデックスを指定せずに検索すると、期待どおり、ネストされた型を持たないもので問題が発生します。スレッドマッピングにはrepliesというプロパティはありません。postsです。ポータルインデックスのために働くこと、

{ 
    filter : { 
     indices : { 
      index   : 'portal', 
      no_match_query : 'none', 
      query   : { 
       bool : { 
        should : [ 
         { 
          match : { 
           title : 'help' 
          } 
         }, 
         { 
          nested : { 
           path : 'replies', 
           query : { 
            match : { 
             'replies.text' : 'help' 
            } 
           } 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

[OK]をしかし、フォーラムのインデックスを含むように作業が、私はちょうどelasticsearchを戦うと使用していないように私は感じて作っている:私はそれはそうのようなフィルタでindexを使用して回避することができますそれは適切です。

インデックスを別々のインデックスに保ち、両方のインデックス結果を返すフィルタを取得するか、単一のインデックスにマージしてソースを保持するフィールドを使用し、ネストされたプロパティを正規化するか、多面的な方法で複数のインデックスを扱う?

+0

"one index vs many"のトレードオフについては、こちらをご覧ください:http://stackoverflow.com/questions/14465668/elastic-search-multiple-indexes-vs-one-index-and-types-for-different-data -sets タイプについては、RESTエンドポイントとクエリ構造を調整して、クエリのタイプ別に簡単にフィルタリングできます。 – ryanlutgen

+0

@ryanlutgenありがとうございました、私の持ち帰りから、私は各ソースごとに数百万のドキュメントを持っているので、私は複数のインデックスに固執する必要があります。ネストされたオブジェクトを検索する正しい方向にいるのか、私が上のようにさまざまなインデックスを適切に検索するのかを言うことができますか? –

+0

https://www.elastic.co/blog/index-vs-type –

答えて

0

は(これらを指摘するためにコメンターのおかげで)これら2つのポストを読む(私が知っている、ES 2に集約):

私がすることを決めた私データがあまりにも異なっていて、私が予想しているドキュメントの量(および将来の追加量)が異なるインデックスを使用する必要があることを意味します。

さまざまなインデックスを検索する方法を学ぶことができますが、この記事ではどの戦略を使用すべきかについて詳しく説明しましたので、そのために新しい質問を開きます。

関連する問題