2017-11-17 17 views
0

実稼働サーバーでRailsコンソールを開き、検索*を実行してElasticSearch dbをカウントできます。Searchkick:インデックス内のレコードをカウントする

s = Sentence.search '*' 
s.count 

...5, 381587, 381590, 381597, 381600, 381602, 381604, 381618, 381632, 381637, 381640, 381642, 381645, 381648, 381670, 381678, 381679, 381686, 381693, 381698, 381712, 387518, 387519, 387535, 387541) 
=> 1000 

二つの問題がここにあります

(1)これは、このセットは、私は、インデックス内のエントリの総数のためにそれをどのように無視することができますされ1000でページングされますか?

(2)検索でElasticSearch IDではないRails IDが返されます。これは私がdbコールをしていることを意味しますか?

Searchkickを使用してRailsコンソールからElasticSearchから直接エントリを取得するにはどうすればよいですか?

答えて

2

ページ分割に関係なく、total_countメソッドを使用してフルカウントを取得できます。

s = Sentence.search '*' 
s.total_count 

(2)検索では、ElasticSearch IDではないRails IDが返されます。これは私がdbコールをしていることを意味しますか?

私の理解によれば、searchkickはテーブルの各行に対してelasticsearchidを作成します。次に、検索するとelasticsearchを検索し、検索キーワードと一致するIDのリストを取得し、返されたelasticsearchidsに基づいてデータベースからすべてのレコードを取り出します。

関連する問題