Elasticsearch best_compression不起作用

时间:2016-11-25 12:57:12

标签: elasticsearch logstash kibana

我正在从Logstash解析Apache访问日志并将其索引到Elasticsearch索引。我还索引了geoipagent字段。虽然索引我观察到的elasticsearch索引大小比实际文件大小{磁盘上的空间大6.7x大。所以我只想了解这是正确的行为还是我在这里做错了什么?我使用的是Elasticsearch 5.0Logstash 5.0Kibana 5.0版本。我也试过了best_compression,但它的磁盘大小相同。这是我到目前为止尝试的配置文件的完整观察。

我的观察结果:

使用案例1:

Apache Log file Size:211 MB
Total number of lines:1,000,000
Index Size:1.5 GB
Observation:索引比文件大小6.7x大。

使用案例2:

我找到了一些压缩elasticsearch索引的解决方案,然后我也尝试了。

- Disable `_all` fields
- Remove unwanted fields that has been created by `geoip` and `agent` parsing.
- Enable `best_compression` [ index.codec": "best_compression"]

Apache Log file Size:211 MB
Total number of lines:1,000,000
Index Size:1.3 GB
Observation:索引6.16x大于文件大小

日志文件格式:

127.0.0.1 - - [24/Nov/2016:02:03:08 -0800] "GET /wp-admin HTTP/1.0" 200 4916 "http://trujillo-carpenter.com/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.01; Trident/5.1)"

我发现Logstash + Elasticsearch Storage Experients他们说他们的索引规模从 6.23x 减少到 1.57x 。但这是非常古老的解决方案,这些解决方案不再适用于Elasticsearch 5.0

我已经尝试了一些参考:
- Part 2.0: The true story behind Elasticsearch storage requirements
- https://github.com/elastic/elk-index-size-tests

当您的目的只显示Kibana上的可视化时,有没有更好的方法来优化Elasticseach索引大小?

1 个答案:

答案 0 :(得分:0)

由于索引设置未应用于索引,我遇到了此问题。我的索引名称和模板名称不同。使用相同的模板名称和索引名称后,正确应用压缩。

在下面的示例中,我使用了索引名称apache_access_logs和模板名称elk_workshop

共享更正的模板和logstash配置。

Logstash.conf

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "apache_access_logs"
    template => "apache_sizing_2.json"
    template_name => "apache_access_logs" /* it was elk_workshop */
    template_overwrite => true
  }
}

模板:

{

    "template": "apache_access_logs", /* it was elk_workshop */
    "settings": {
        "index.refresh_interval": "5s",
        "index.refresh_interval": "30s",
        "number_of_shards": 5,
        "number_of_replicas": 0
    },
    ..
}         

参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html#indices-templates