2013-07-04 2 views
1

У нас есть индекс, содержащий 241.047 элементов в нем. Эти элементы могут иметь любое количество подэлементов, которые индексируются как вложенные документы. Общее количество подпунктов - 381,705.Неожиданные результаты подсчета в ElasticSearch

Оба значения include_in_parent и include_in_root не заданы в сопоставлении, что означает, что каждый вложенный документ индексируется как дополнительные документы. Это должно означать, что в индексе будет в общей сложности 241.047 + 381.705 = 622.752 документов.

Когда я запускаю следующую команду Curl для поиска количества документов в индексе, я получаю другое число, это не за горами, но мне интересно, почему это дает мне другое число, и оно не возвращает число I ожидаю.

  • curl -XGET 'http://localhost:9200/catawiki_development/_status?pretty' возвращает 622.861

Следующая к тому, что, когда я бегу Curl команду, чтобы получить число корневых документов я получаю другой номер, чем если бы я бегу match_all запрос и попросить количество документов возвращается

  • curl -XGET 'http://localhost:9200/elasticsearch_development/_count?pretty' возвращает 241,156
  • match_all запрос возвращает правильное число DOCUME nts, ​​241.047

Как объяснить эту разницу?

+0

Могу ли я узнать, помог ли ответ? – javanna

+0

Извините, во время вашего ответа я уже прекратил разработку приложения на основе elasticsearch. К сожалению, я не смог опробовать его, поэтому не могу сказать, помог ли ваш ответ. – Denis

+0

Справедливо, спасибо за то, что вернулись ко мне! – javanna

ответ

2

Путь к запросу api count очень отличается от пути обычного запроса на поиск. Фактически это ярлык, который позволяет получать только количество документов, соответствующих запросу, то есть «это». Он отличается от поиска также search_type=count, который фактически является только первой частью поиска: транслирует запрос поиска ко всем осколкам, но не уменьшает/извлекает, так как мы хотим только вернуть общее количество соответствующих документов. Вы также можете добавить фасеты и т. Д. К поисковому запросу (при использовании search_type=count тоже), что вы не можете сделать с счетчиком api.

Тем не менее, я не удивлен, что вы видите разницу по вышеуказанной причине, было бы хорошо понять, в чем проблема. Лучше всего было бы воспроизвести проблему с небольшим количеством документов и open an issue, включая curl recreation, чтобы мы могли посмотреть на нее.

В то же время я бы предложил использовать поисковый запрос с search_type=count, если у вас есть проблемы с count api. Гарантируется, что оно вернет такое же количество документов, что и обычный поиск, только потому, что это точно такая же логика.

Смежные вопросы