我有一个CentOS 6.5服务器,我安装了Elasticsearch 1.3.2 。
我的elasticsearch.ymlconfiguration文件是作为默认configuration使用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到我的configuration文件,因为我发现在elasticsearch 0.19.5发行说明 (这是当store压缩首先出现),但我还没有能够告诉如果它有所作为,并且无论如何压缩应该在默认情况下,现在…
Elasticsearch不会自动收缩数据。 对于任何数据库都是如此。 除了存储原始数据之外,每个数据库都必须存储元数据。 普通数据库只存储一个索引(为了更快的search)db-admin在前面select的列。 ElasticSearch不同,因为它默认索引每一列。 因此,使得索引非常大,但另一方面在检索数据的同时给出了完美的性能。
在正常的configuration中,索引后的原始数据会增加4到6倍。 虽然它很大程度上取决于实际的数据。 但是这实际上是有意的行为。
因此,为了减less数据库的大小,你必须像在RDBMs中那样反过来:排除被索引或存储的列,不需要索引。
此外,您可以打开压缩,但只有当您的“文档”很大,这可能不会改善日志文件条目。
这里有一些比较和有用的提示: https : //github.com/jordansissel/experiments/tree/master/elasticsearch/disk
但请记住:search带有成本。 支付的成本是磁盘空间。 但是你获得灵活性。 如果你的存储容量超过,那么水平增长! 这是ElasticSearch获胜的地方。