Было бы неплохо иметь количество элементов без необходимости выполнять поиск, подобный
Obj.search("id:*").count
Возможно ли это?
В ElasticSearch вы можете сосчитать все элементы, используя API подсчета
curl -XGET http://localhost:9200/index/_count
См. Документы Count API на их сайте.
Только что получил подсказку от Карми.API подсчета теперь доступен.
Вы можете сделать следующее:
s = Tire.search 'articles-test', :search_type => 'count' do query { term :tags, 'ruby' } end
Только тогда определено s.results.total.
s.results.total
См. Здесь: https://github.com/karmi/tire/blob/master/test/integration/count_test.rb
Сначала вы должны использовать запрос match_all: MyModel.search( { query { all } }).results.total. (В Lucene избегайте групповых запросов любой ценой.)
match_all
MyModel.search( { query { all } }).results.total
В настоящее время Tire не предоставляет API «count». Это изменится.
Если вы используете гем'asticsearch-model ', вот хороший вкладыш:
Elasticsearch::Model.client.count(index: 'your_index_name_here')['count']
Вы также можете сделать это в самоцвете elasticsearch-model:
elasticsearch-model
Article.search("cats", search_type: 'count').results.total # => 2026
И вы не вызовете выборку ...
Article.search("cats", search_type: 'count').map {|r| r.title} # => []
с консоли:
Model.search("*:*").results.total
может быть, кто-то поможет;)
Если вы хотите получить количество документов внутри индекса, вы также можете просто проверить индекс статистики , например:
curl -XGET localhost:9200/_stats
В результате вы получите количество документов / удаленодокументы (документы еще не объединены).