Sarebbe bello avere un conteggio di elementi senza dover fare una ricerca comeC'è un modo per contare tutti gli elementi di un indice in ElasticSearch o Tyre?
Obj.search("id:*").count
è possibile?
Sarebbe bello avere un conteggio di elementi senza dover fare una ricerca comeC'è un modo per contare tutti gli elementi di un indice in ElasticSearch o Tyre?
Obj.search("id:*").count
è possibile?
In primo luogo, è necessario utilizzare la query match_all
: MyModel.search({ query { all } }).results.total
. (In Lucene, evitare le query con caratteri jolly a tutti i costi.)
Attualmente, Tyre non espone l'API "count". Questo cambierà.
In elasticsearch si possono contare tutti gli elementi utilizzando l'API conteggio
curl -XGET http://localhost:9200/index/_count
Vedi le Count API documentazione sul loro sito.
Ho appena ricevuto un suggerimento da Karmi. L'API conta è ora disponibile.
È possibile effettuare le seguenti operazioni:
s = Tire.search 'articles-test', :search_type => 'count' do
query { term :tags, 'ruby' }
end
Solo allora s.results.total
è definito.
vedere qui: https://github.com/karmi/tire/blob/master/test/integration/count_test.rb
Se si vuole ottenere il numero di documenti all'interno dell'indice, si potrebbe anche solo controllare index stats, come questo:
curl -XGET localhost:9200/_stats
Nel risultato si otterrà il numero di docs/cancellati documenti (documenti non ancora uniti).
Da console:
Model.search("*:*").results.total
forse aiutare qualcuno;)
Si può fare questo nel elasticsearch-model
gemma così:
Article.search("cats", search_type: 'count').results.total
# => 2026
E non causerà un recupero. ..
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
Non c'è il conteggio q disponibile in gomma? – Karussell