у меня есть CentOS 6.5 сервер на котором я установил Elasticsearch 1.3.2.
Мой elasticsearch.yml
Файл конфигурации представляет собой минимальную модификацию файла, поставляемого с elasticsearch по умолчанию. После удаления всех прокомментированных строк это выглядит так:
cluster.name: xxx-kibana
node:
name: "xxx"
master: true
data: true
index.number_of_shards: 5
index.number_of_replicas: 1
path:
logs: /log/elasticsearch/log
data: /log/elasticsearch/data
transport.tcp.port: 9300
http.port: 9200
discovery.zen.ping.multicast.enabled: false
Elasticsearch должен иметь сжатие НА по умолчанию, и я читал различные тесты, в которых степень сжатия составляла от 50% до 95%. К сожалению, степень сжатия в моем случае составляет -400%, или другими словами: данные, хранящиеся в ES, занимают в 4 раза больше дискового пространства, чем текстовый файл с таким же содержимым. Видеть:
12K logstash-2014.10.07/2/translog
16K logstash-2014.10.07/2/_state
116M logstash-2014.10.07/2/index
116M logstash-2014.10.07/2
12K logstash-2014.10.07/4/translog
16K logstash-2014.10.07/4/_state
127M logstash-2014.10.07/4/index
127M logstash-2014.10.07/4
12K logstash-2014.10.07/0/translog
16K logstash-2014.10.07/0/_state
109M logstash-2014.10.07/0/index
109M logstash-2014.10.07/0
16K logstash-2014.10.07/_state
12K logstash-2014.10.07/1/translog
16K logstash-2014.10.07/1/_state
153M logstash-2014.10.07/1/index
153M logstash-2014.10.07/1
12K logstash-2014.10.07/3/translog
16K logstash-2014.10.07/3/_state
119M logstash-2014.10.07/3/index
119M logstash-2014.10.07/3
622M logstash-2014.10.07/ # <-- This is the total!
против:
6,3M /var/log/td-agent/legacy_api.20141007_0.log
8,0M /var/log/td-agent/legacy_api.20141007_10.log
7,6M /var/log/td-agent/legacy_api.20141007_11.log
6,7M /var/log/td-agent/legacy_api.20141007_12.log
8,0M /var/log/td-agent/legacy_api.20141007_13.log
7,6M /var/log/td-agent/legacy_api.20141007_14.log
7,6M /var/log/td-agent/legacy_api.20141007_15.log
7,7M /var/log/td-agent/legacy_api.20141007_16.log
5,6M /var/log/td-agent/legacy_api.20141007_17.log
7,9M /var/log/td-agent/legacy_api.20141007_18.log
6,3M /var/log/td-agent/legacy_api.20141007_19.log
7,8M /var/log/td-agent/legacy_api.20141007_1.log
7,1M /var/log/td-agent/legacy_api.20141007_20.log
8,0M /var/log/td-agent/legacy_api.20141007_21.log
7,2M /var/log/td-agent/legacy_api.20141007_22.log
3,8M /var/log/td-agent/legacy_api.20141007_23.log
7,5M /var/log/td-agent/legacy_api.20141007_2.log
7,3M /var/log/td-agent/legacy_api.20141007_3.log
8,0M /var/log/td-agent/legacy_api.20141007_4.log
7,5M /var/log/td-agent/legacy_api.20141007_5.log
7,5M /var/log/td-agent/legacy_api.20141007_6.log
7,8M /var/log/td-agent/legacy_api.20141007_7.log
7,8M /var/log/td-agent/legacy_api.20141007_8.log
7,2M /var/log/td-agent/legacy_api.20141007_9.log
173M total
Что я делаю не так? Почему данные не сжимаются?
Я предварительно добавил index.store.compress.stored: 1
в мой файл конфигурации, поскольку я обнаружил, что в elasticsearch 0.19.5
примечания к выпуску (вот когда store
сжатие вышло первым), но я еще не могу сказать, имеет ли это значение, и в любом случае сжатие должно быть включено по умолчанию, в настоящее время ...
Elasticsearch не сжимает ваши данные автоматически. Это верно для любой базы данных. Помимо хранения необработанных данных, каждая база данных должна хранить вместе с ними метаданные. Обычные базы данных хранят индекс (для более быстрого поиска) только для столбцов, которые администратор базы данных выбрал заранее. ElasticSearch отличается тем, что индексирует каждый столбец по умолчанию. Таким образом, индекс становится чрезвычайно большим, но, с другой стороны, обеспечивает отличную производительность при извлечении данных.
В обычных конфигурациях вы видите увеличение необработанных данных в 4-6 раз после индексации. Хотя это сильно зависит от реальных данных. Но на самом деле это предполагаемое поведение.
Таким образом, чтобы уменьшить размер базы данных, вы должны пойти другим путем, как вы это делали в RDBM: исключить из индексации или хранения столбцы, которые вам не нужно индексировать.
Кроме того, вы можете включить сжатие, но это улучшится только тогда, когда ваши «документы» будут большими, что, вероятно, неверно для записей файла журнала.
Здесь есть несколько сравнений и полезные советы: https://github.com/jordansissel/experiments/tree/master/elasticsearch/disk
Но помните: за поиск приходится платить. Плата за дисковое пространство. Но вы получаете гибкость. Если размер вашего хранилища превышает, то увеличивайте его по горизонтали! В этом выигрывает ElasticSearch.