压缩到Elasticsearch索引

时间:2016-07-13 05:45:07

标签: elasticsearch compression

有没有办法在Elasticsearch中使用新创建的索引将默认压缩方法设置为best_compression?

显然,可以在创建索引后手动完成。

基于谷歌搜索,这应该可以通过在elasticsearch.yml中设置,或通过创建自定义模板来设置它来实现。但是,我无法在elasticsearch.yml中找到它。我尝试了各种各样的变化,但基本上应该这样做:

index.codec: best_compression

但事实并非如此。

我也不习惯创建自定义模板,因为我的目标是对所有索引进行压缩,而不仅仅是使用某些特定模板创建的索引。但如果这是唯一的方式,那就这样吧。

我的用例是使用Logstash的Elasticsearch,因此Logstash是这些索引的创建者。如果没有自定义模板,在Logstash配置中设置压缩方法似乎完全不可能。我正在运行Elasticsearch 2.2.0版。

目前我可以在关闭索引并执行后手动设置压缩:

curl -XPUT 'http://localhost:9200/example_index/_settings' -d '{"index":{"codec":"best_compression"}}'

然后重新打开索引。

来自官方文件:

index.codec
  

默认值使用LZ4压缩压缩存储的数据,但是   这可以设置为best_compression,它使用DEFLATE更高   压缩率,以较慢的存储字段性能为代价。

来源:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html

3 个答案:

答案 0 :(得分:3)

index.codec设置是节点级别设置,在新索引的设置列表中不可见。如果索引模板具体设置codec那么将使用该模板,否则将使用节点级别的索引模板。

此外,在更改索引的编解码器时,只有新段(在新索引之后,对现有文档或段合并的更改)将使用新的编解码器。

答案 1 :(得分:0)

index.codecstatic setting,无法在实时索引上修改。您可以使用index templates更改此设置。

答案 2 :(得分:0)

如果您不想在节点级别执行此操作,则可以使用一些小技巧,您可以设置一个以*作为其索引模式的模板。示例:

PUT _template/my_template
{
  "index_patterns": ["*"],
  "settings": {
    "index": {
      "codec": "best_compression"
    }
  }
}