ElasticSearchまたはTireでインデックスのすべての要素を数える方法はありますか?
Obj.search("id:*").count
これが可能であるような検索を行うことなく、要素の数を持っていいだろうか?
ElasticSearchまたはTireでインデックスのすべての要素を数える方法はありますか?
Obj.search("id:*").count
これが可能であるような検索を行うことなく、要素の数を持っていいだろうか?
まず、match_all
クエリ:MyModel.search({ query { all } }).results.total
を使用してください。 (Luceneでは、すべてのコストでワイルドカードクエリを避けてください)。
現在、Tireは「カウント」APIを公開していません。それは変わるでしょう。
ElasticSearchでは、カウントAPI
curl -XGET http://localhost:9200/index/_count
自分のサイトにCount APIのドキュメントを参照してくださいを使用して、すべての要素を数えることができます。
ちょうどKarmiからのヒントを得ました。カウント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
を使用すると、インデックス内のドキュメントの数を取得したい場合は、あなたもちょうどこのように、index statsをチェックすることができ:
curl -XGET localhost:9200/_stats
結果で削除したドキュメント/の数を取得しますdocs(まだマージされていないドキュメント)。コンソールから
:
Model.search("*:*").results.total
多分誰かを助ける;)
あなたにもelasticsearch-model
宝石でこれを行うことができます。
Article.search("cats", search_type: 'count').results.total
# => 2026
そして、あなたがフェッチ引き起こすことはありません。 ..
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
カウントqはありませんか?タイヤで手に入るの? – Karussell