Есть ли способ подсчитать все элементы индекса в ElasticSearch или Tire? - PullRequest
7 голосов
/ 01 ноября 2011

Было бы неплохо иметь количество элементов без необходимости выполнять поиск, подобный

Obj.search("id:*").count

Возможно ли это?

Ответы [ 7 ]

10 голосов
/ 09 ноября 2011

В ElasticSearch вы можете сосчитать все элементы, используя API подсчета

curl -XGET http://localhost:9200/index/_count

См. Документы Count API на их сайте.

9 голосов
/ 11 мая 2012

Только что получил подсказку от Карми.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

8 голосов
/ 01 ноября 2011

Сначала вы должны использовать запрос match_all: MyModel.search( { query { all } }).results.total. (В Lucene избегайте групповых запросов любой ценой.)

В настоящее время Tire не предоставляет API «count». Это изменится.

3 голосов
/ 12 марта 2018

Если вы используете гем'asticsearch-model ', вот хороший вкладыш:

Elasticsearch::Model.client.count(index: 'your_index_name_here')['count']
1 голос
/ 05 декабря 2015

Вы также можете сделать это в самоцвете elasticsearch-model:

Article.search("cats", search_type: 'count').results.total
# => 2026

И вы не вызовете выборку ...

Article.search("cats", search_type: 'count').map {|r| r.title}
# => []
0 голосов
/ 11 ноября 2015

с консоли:

Model.search("*:*").results.total

может быть, кто-то поможет;)

0 голосов
/ 29 августа 2014

Если вы хотите получить количество документов внутри индекса, вы также можете просто проверить индекс статистики , например:

curl -XGET localhost:9200/_stats

В результате вы получите количество документов / удаленодокументы (документы еще не объединены).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...