Searchkick:计算索引中的记录
Searchkick: counting records in index
我可以在生产服务器上打开一个 Rails 控制台并进行搜索 * 然后依靠我的 ElasticSearch 数据库。
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) 搜索返回的是 Rails ID 而不是 ElasticSearch ID。这是否意味着我正在调用数据库?
如何使用 Searchkick 通过 Rails 控制台直接从 ElasticSearch 获取条目数?
您可以使用方法 total_count 获取完整计数,而不考虑分页。
s = Sentence.search '*'
s.total_count
(2) 搜索返回的是 Rails ID 而不是 ElasticSearch ID。这是否意味着我正在调用数据库?
根据我的理解,searchkick 会为 table 中的每一行创建一个 elasticsearchid。然后,当你搜索时,它会搜索elasticsearch,并带出与搜索关键字匹配的id列表,然后根据返回的elasticsearchids从数据库中提取所有记录。
我可以在生产服务器上打开一个 Rails 控制台并进行搜索 * 然后依靠我的 ElasticSearch 数据库。
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) 搜索返回的是 Rails ID 而不是 ElasticSearch ID。这是否意味着我正在调用数据库?
如何使用 Searchkick 通过 Rails 控制台直接从 ElasticSearch 获取条目数?
您可以使用方法 total_count 获取完整计数,而不考虑分页。
s = Sentence.search '*'
s.total_count
(2) 搜索返回的是 Rails ID 而不是 ElasticSearch ID。这是否意味着我正在调用数据库?
根据我的理解,searchkick 会为 table 中的每一行创建一个 elasticsearchid。然后,当你搜索时,它会搜索elasticsearch,并带出与搜索关键字匹配的id列表,然后根据返回的elasticsearchids从数据库中提取所有记录。