Различия между размером index/_stats и размером du -h в elasticsearch 6

У меня есть быстрый вопрос:

Я создаю случайные файлы JSON и отправляю их в elasticsearch. Когда я проверяю размеры файлов с помощью du -h на моей машине Centos и когда я проверяю статистику в разделе _stats, я получаю большие различия между результатами. Например:

номер файла--------du -h размер ------ /_stats

100 --------------- 404 kb ---------- 297 kb

1000 ------------- 4096 kb -------- 1200 kb

3000 ------------- 12 MB ----------- 3.3 MB

Разумно ли, что хранить что-то в эластичной памяти намного меньше, чем на Linux-машине? Почему разрыв такой большой?


person mizenetofa1989    schedule 26.03.2018    source источник
comment
Не могли бы вы рассказать, как именно вы измеряете du -h? Это размер отправленных jsons на диск?   -  person Nikolay Vasiliev    schedule 28.03.2018


Ответы (1)


Вы даете очень мало информации, так что нам приходится много гадать.

Вы можете говорить о многих JSON одинаковой структуры, которые представляют документы в ElasticSearch. Тогда каждый JSON будет повторять информацию о структуре. Тогда у вас будет в каждом JSON e. грамм. { "first_name": <X>, "last_name": <Y>, "phone": <Z> } в то время как в БД ElasticSearch структура сохраняется один раз для каждого индекса, т.е. е. все документы имеют общую структуру, поэтому необходимо сохранять только различные значения <X>, <Y> и <Z>.

Естественно, это намного меньше.

Кроме того, du дает вам использование диска, которое обычно больше, чем размер данных, потому что в файловых системах вы выделяете целые блоки (в основном для ускорения вещи), поэтому всегда есть определенное количество накладных расходов. В очень плохом случае большое количество файлов содержит всего несколько байт каждый, каждый файл использует полный блок, что значительно увеличивает использование диска. Для 20-байтовых файлов в файловой системе с блоками по 8192 байт коэффициент будет ~400!

person Alfe    schedule 18.10.2018