2017-01-11 6 views
0

私は5000万本の製品リストを持っています。各製品には200の機能のリストがあります。私は、200のフィーチャー間で最大のオーバーラップを持つ製品フィーチャーを突き合わせることによって、同様の製品を見つけることを検討しています。弾性検索:同様の製品を検索

現在、200単語をスペースで連結して長い文字列を構成しています。私が特定の選択された製品のために同様の製品を見つけたいと思うとき、私は格納された200単語の長い文字列を検索し、elasticsearchを検索します。

これは予想される結果を示しますが、各検索にはおよそ7秒かかります。これは、検索フレーズが長すぎるためです。これを行い、弾力性に最もよく似た部分を見つけるよりよい方法はありますか?

答えて

0

私はあなたがいくつかのことを試してください/確認することをお勧め:

私は5000万製品のリストを持っています。各製品には、200 機能のリストがあります。私は、製品番号 の機能を200個の機能の中で最大のオーバーラップを持つものに一致させることで、同様の製品を探しています。現在 200単語をスペースで連結して長い文字列を作成します。

製品がDoc型であると仮定すると、通常は値の配列としてenabling field dataという試し保存機能を使用できます。 aggregationsを使用して、適切な前述の最大オーバーラップを適用してグループ化し、必要なものを得ることは簡単です。私ははるかに速くなると強く信じています。

私は格納された200語の長い文字列を検索し、elasticsearchを検索します。

は、あなたが望むすべてが(新しい集計結果ではなく、すべての製品やその他のドキュメントタイプに完全対応し、この例では(古いバージョン)をカウントまたはサイズ0でquery_then_fetchする検索タイプを設定し、いくつかの状況があるかもしれませんバージョン)、すべてのdocタイプの最初のフェッチを避け、集計のみを取得すると、これは要件に応じていくつかの状況で使用できます。

elasticsearch environment proper preparedを持っていることを確認してください。

最後にこの数のドキュメントでは、デフォルトのものよりもあなたのケースに適したものが見つかる可能性があります。shard /replicas configuration