8

不必像这样进行搜索就可以计算元素数量会很好

Obj.search("id:*").count

这可能吗?

4

7 回答 7

10

在 ElasticSearch 中,您可以使用 count API 计算所有元素

curl -XGET http://localhost:9200/index/_count

请参阅他们网站上的Count API文档。

于 2011-11-09T00:52:59.130 回答
9

首先,您应该使用match_all查询:MyModel.search( { query { all } }).results.total. (在 Lucene 中,不惜一切代价避免通配符查询。)

目前,Tire 没有公开“计数”API。那将会改变。

于 2011-11-01T17:22:49.460 回答
9

刚刚从卡米那里得到了提示。计数 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

于 2012-05-10T20:05:37.120 回答
4

如果您使用 gem 'elasticsearch-model',这里有一个很好的衬里:

Elasticsearch::Model.client.count(index: 'your_index_name_here')['count']
于 2018-03-12T17:52:30.257 回答
2

从控制台:

Model.search("*:*").results.total

也许可以帮助某人;)

于 2015-11-11T09:03:59.430 回答
2

您也可以在elasticsearch-modelgem 中执行此操作:

Article.search("cats", search_type: 'count').results.total
# => 2026

而且你不会导致获取......

Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
于 2015-12-05T00:17:21.403 回答
0

如果要获取索引中的文档数量,也可以只检查索引统计信息,如下所示:

curl -XGET localhost:9200/_stats

结果,您将获得文档/已删除文档的数量(尚未合并的文档)。

于 2014-08-29T19:34:46.313 回答