2016-12-02 6 views
0

私はelasticsearchインデックスに500Mエントリを持っています。それぞれは5000の異なるソースの1つに属します(エントリは "source"という名前の整数属性を持ちます)。 検索を行うために、私はソースごとにそれらを増強したい:それぞれのソースIDに対して、私は異なるブーストをしたい。 ブーストは時間とともに変化します(例えば、1時間に1回)ので、インデックス時のブースティングは良いアイデアのようには見えません。エントリーフィールド値に基づいて伸縮性検索をブーストします

どうすればいいですか?

私はこれを検索しましたが、本当に有用なものは見つかりませんでした。 私は答えで見つけた2つのオプションを入れましたが、もっと良い選択肢がありますか?

答えて

0

1つの選択肢は、各クラスを子エントリとして親に変換することですが、ソースのすべての子(エントリ)は同じシャードに入れられます(エントリはソース間で非常に偏在します)。 DBスキーマを変更し、データベースを再構築し、既存のコードをすべて更新する必要があります。

別のオプションは、すべてのソースを別のインデックスに配置し、index_boostを使用することです。同様の欠点があり、また、私はクエリにブーストを提供する必要があります(私はわずか5つのソースを持っていた場合にはうまくいきました)。

関連する問題