のような検索をしなくても、要素の数があればいいのにと思います。
Obj.search("id:*").count
これは可能ですか?
ElasticSearch では、カウント 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']
これはelasticsearch-model
gemでも行うことができます。
Article.search("cats", search_type: 'count').results.total
# => 2026
そして、あなたはフェッチを引き起こしません...
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
インデックス内のドキュメントの数を取得する場合は、次のようにindex statsを確認することもできます。
curl -XGET localhost:9200/_stats
その結果、ドキュメントの数/削除されたドキュメント (まだマージされていないドキュメント) が表示されます。