私は、Elasticsearch を使用して 3 種類のドキュメントのインデックス作成と検索を行う Rails アプリケーションに取り組んでいA
ます。それらは関連していますが、その方法はあまり重要ではありません。3 つの異なるカテゴリでアイテムを検索して返すことができる検索ビューがあります。最初の設定では、すべてのカテゴリの上位 20 件の結果を 1 つのリストにまとめる予定でしたが、現在はうまく機能していません。B
C
これで、基本的に、ビューには 3 つの異なるタブがあり、1 つは各インデックスの結果用です。現在の方法論は、各カテゴリから個別に最大 10 の結果を取得したいため、破綻します。23 のA
、2 の 、B
および 5 のC
はありません。これは、スプレッドを得ることを期待して結果の制限を増やしただけで発生します。Go でこれを行っていた場合、これを 3 つの単純な同時要求に分割するだけでよかったのですが、Ruby でこれを試すのはまだ慣れていないため、躊躇しています。私の調査によると、私のオプションのようです。優先順位は次のとおりです。
- 現在の Elasticsearch クエリで、各インデックスから 10 の制限で最大 30 の結果を返すようにします (私の質問)
- システム上の3 つのバックグラウンド コールに委任し
wget
、後でスピンして結果を待ちます - マルチスレッド アプローチを使用します (Ruby プロセスの開始に時間がかかりすぎます)。私が使用しているすべての Gem からスレッド セーフ ワームがこの缶から出てくるという見通しは、私を怖がらせます。
1番は完全に完璧です。ドキュメントを調べても、これを達成する方法がわかりません。私が望むものに近いように聞こえるバケットに結果を集約できることは知っていますが、各インデックスからの結果の数を個別に制限することもできますか?