不必像这样进行搜索就可以计算元素数量会很好
Obj.search("id:*").count
这可能吗?
在 ElasticSearch 中,您可以使用 count API 计算所有元素
curl -XGET http://localhost:9200/index/_count
请参阅他们网站上的Count API文档。
首先,您应该使用match_all
查询:MyModel.search( { query { all } }).results.total
. (在 Lucene 中,不惜一切代价避免通配符查询。)
目前,Tire 没有公开“计数”API。那将会改变。
刚刚从卡米那里得到了提示。计数 API 现在可用。
您可以执行以下操作:
s = Tire.search 'articles-test', :search_type => 'count' do
query { term :tags, 'ruby' }
end
只有这样s.results.total
才被定义。
见这里:https ://github.com/karmi/tire/blob/master/test/integration/count_test.rb
如果您使用 gem 'elasticsearch-model',这里有一个很好的衬里:
Elasticsearch::Model.client.count(index: 'your_index_name_here')['count']
从控制台:
Model.search("*:*").results.total
也许可以帮助某人;)
您也可以在elasticsearch-model
gem 中执行此操作:
Article.search("cats", search_type: 'count').results.total
# => 2026
而且你不会导致获取......
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []