Byłoby miło mieć liczbę elementów bez konieczności zrobić wyszukiwania jakCzy istnieje sposób na zliczanie wszystkich elementów indeksu w ElasticSearch lub Tyre?
Obj.search("id:*").count
to jest możliwe?
Byłoby miło mieć liczbę elementów bez konieczności zrobić wyszukiwania jakCzy istnieje sposób na zliczanie wszystkich elementów indeksu w ElasticSearch lub Tyre?
Obj.search("id:*").count
to jest możliwe?
Najpierw należy użyć zapytania match_all
: MyModel.search({ query { all } }).results.total
. (W Lucene, za wszelką cenę unikaj zapytań za pomocą symboli wieloznacznych.)
Obecnie Tire nie udostępnia interfejsu API "count". To się zmieni.
W ElasticSearch można policzyć wszystkie elementy używając API zliczania
curl -XGET http://localhost:9200/index/_count
Zobacz na Count API Docs na ich miejscu.
Właśnie dostałem podpowiedź od Karmi. Interfejs API licznika jest już dostępny.
można wykonać następujące czynności:
s = Tire.search 'articles-test', :search_type => 'count' do
query { term :tags, 'ruby' }
end
Dopiero wtedy s.results.total
jest zdefiniowana.
Zobacz tutaj: https://github.com/karmi/tire/blob/master/test/integration/count_test.rb
Jeśli chcesz uzyskać liczbę dokumentów w indeksie, można też po prostu sprawdzić index stats, tak:
curl -XGET localhost:9200/_stats
W rezultacie otrzymasz liczbę docs/usunięte dokumenty (dokumenty jeszcze nie zostały scalone).
Od konsoli:
Model.search("*:*").results.total
może komuś pomóc;)
Można to zrobić w elasticsearch-model
gem, a także:
Article.search("cats", search_type: 'count').results.total
# => 2026
I nie spowoduje pobierania. ..
Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
Czy nie ma liczby q dostępne w oponach? – Karussell