2017-07-10 3 views
0

私は1つのフィールドでElasticsearchで補完候補を使用しています。このタイプには、複数のユーザーのドキュメントが含まれています。返された提案を特定のクエリに一致するドキュメントに限定する方法はありますか?実行方法制限付き文書のElasticsearch completion suggesterクエリー

私は現在、このクエリを使用してい

{ 
    "name" : { 
    "text" : "Peter", 
    "completion" : { 
     "field" : "name_suggest" 
    } 
    } 
} 

は別のもので、このクエリを結合する方法はあります、例えば

{ 
    "query":{ 
     "term" : { 
      "user_id" : "590c5bd2819c3e225c990b48" 
     } 
    } 
} 

答えて

1

は、フィルタリング機能を持つだけで、専門完了提案者であるcontext suggesterを見て、持っている - しかし、このまだ定期的なクエリフィルタではありませんが、それを覚えておいてください。

0

あなたはこのように、あなたのクエリにクエリと提案者の両方を指定することができます。

{ 
    "query":{ 
     "term" : { 
      "user_id" : "590c5bd2819c3e225c990b48" 
     } 
    }, 
    "suggest": { 
     "name" : { 
      "text" : "Peter", 
      "completion" : { 
       "field" : "name_suggest" 
      } 
     } 
    } 
} 
+0

このクエリは、一致するuser_idフィールドを持たないドキュメントでも結果を返します。 – Joba

0

私は同様のユースケースを持っている、と私は私がこれまで何を読んでからhere

を参照して、弾性検索フォーラムで私の質問を掲載しました、私はあなたが文書を制限することができ、完了提案者ではないと思います。インデックス時に有限状態トランスデューサ(プレフィックスツリー)を作成すると、高速になりますが、追加フィールドでのフィルタリングの柔軟性が失われます。 user_idのカーディナリティが非常に高いため、コンテキストサジェッタがあなたのケースでうまくいくとは思わない(私が間違っているかどうかを教えてください)。

私はedge-ngrams部分一致がより柔軟で、実際にあなたのユースケースで動作すると思います。

あなたが最終的に実装するものを教えてください。

+0

私は実際に@alrのような文脈のsuggestersを提案しました。少数のユーザーのためにサービスを構築しています。ユーザーごとに多数のドキュメントが用意されているため、コンテキスト・スペシャリストがうまく動作するはずです。 – Joba

関連する問題