有没有办法在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
答案 0 :(得分:3)
index.codec
设置是节点级别设置,在新索引的设置列表中不可见。如果索引模板具体设置codec
那么将使用该模板,否则将使用节点级别的索引模板。
此外,在更改索引的编解码器时,只有新段(在新索引之后,对现有文档或段合并的更改)将使用新的编解码器。
答案 1 :(得分:0)
index.codec
是static setting,无法在实时索引上修改。您可以使用index templates更改此设置。
答案 2 :(得分:0)
如果您不想在节点级别执行此操作,则可以使用一些小技巧,您可以设置一个以*
作为其索引模式的模板。示例:
PUT _template/my_template
{
"index_patterns": ["*"],
"settings": {
"index": {
"codec": "best_compression"
}
}
}