如果没有像
那样进行搜索,那么拥有一些元素会很不错Obj.search("id:*").count
这可能吗?
答案 0 :(得分:10)
在ElasticSearch中,您可以使用count API
计算所有元素curl -XGET http://localhost:9200/index/_count
查看其网站上的Count API文档。
答案 1 :(得分:9)
刚从卡米那里得到了一个暗示。 count 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
答案 2 :(得分:8)
首先,您应该使用match_all
查询:MyModel.search( { query { all } }).results.total
。 (在Lucene中,不惜一切代价避免使用通配符。)
目前,Tire没有公开“count”API。那会改变。
答案 3 :(得分:3)
如果您使用的是gem' elasticsearch-model',这里有一个不错的内容:
Elasticsearch::Model.client.count(index: 'your_index_name_here')['count']
答案 4 :(得分:1)
您也可以在elasticsearch-model
gem中执行此操作:
Article.search("cats", search_type: 'count').results.total
# => 2026
你不会导致获取......
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
答案 5 :(得分:0)
答案 6 :(得分:0)
来自控制台:
Model.search("*:*").results.total
也许可以帮助别人;)