我有一个运行Elasticsearch 1.4.4
的旧群集。
我的群集包含大约110亿个文档,所有原色的大小都在4TB
左右。
我现在正在升级到Elasticsearch 5.2.2
,这当然意味着重新索引我的数据。我有一个单独的集群,目前正在发生这种情况。我正在从源数据库重新编制索引,因为我在原始索引上禁用了_all
和_source
。
我现在已经重新编制了大约7.5亿个文档的索引,并注意到我的新索引大小已经是350GB
。我做了一些数学运算,看起来索引在完全索引时会增长到5.5TB
左右。那比<{1}}索引 1.5TB 。我没想到这个。相反,我期待大小的减少,因为我删除了几个属性。这是正常的事情还是我做错了什么? 1.4.4
中是否有不同的默认设置可以促进这种增长?
1.4.4索引设置:
5.2.2
1.4.4索引映射:
{
"index": {
"refresh_interval": "30s",
"number_of_shards": "20",
"creation_date": "1426251049131",
"analysis": {
"analyzer": {
"default": {
"filter": [
"icu_folding",
"icu_normalizer"
],
"type": "custom",
"tokenizer": "icu_tokenizer"
}
}
},
"uuid": "WdgnCLyITgmpb4DROegV3Q",
"version": {
"created": "1040499"
},
"number_of_replicas": "1"
}
}
5.2.2索引设置:
{
"article": {
"_source": {
"enabled": false
},
"_all": {
"enabled": false
},
"properties": {
"date": {
"format": "dateOptionalTime",
"type": "date",
"doc_values": true
},
"has_enclosures": {
"type": "boolean"
},
"feed_subscribers": {
"type": "integer",
"doc_values": true
},
"feed_language": {
"index": "not_analyzed",
"type": "string"
},
"author": {
"norms": {
"enabled": false
},
"analyzer": "keyword",
"type": "string"
},
"has_pictures": {
"type": "boolean"
},
"title": {
"norms": {
"enabled": false
},
"type": "string"
},
"content": {
"norms": {
"enabled": false
},
"type": "string"
},
"has_video": {
"type": "boolean"
},
"url": {
"index": "not_analyzed",
"type": "string"
},
"feed_canonical": {
"type": "boolean"
},
"feed_id": {
"type": "integer",
"doc_values": true
}
}
}
}
5.2.2索引映射:
{
"articles": {
"settings": {
"index": {
"refresh_interval": "-1",
"number_of_shards": "40",
"provided_name": "articles",
"creation_date": "1489604158595",
"analysis": {
"analyzer": {
"default": {
"filter": [
"icu_folding",
"icu_normalizer"
],
"type": "custom",
"tokenizer": "icu_tokenizer"
}
}
},
"number_of_replicas": "0",
"uuid": "LOeOcZb_TMCX6E_86uMyXQ",
"version": {
"created": "5020299"
}
}
}
}
}
任何帮助都将非常感谢,因为在此群集上完全重新索引大约需要30天...谢谢!
答案 0 :(得分:1)
我的猜测是doc_values。 由于弹性2.0,默认情况下启用了doc_values,这意味着5.2映射会为比1.4映射更多的字段创建doc_values,这会消耗磁盘空间。
答案 1 :(得分:0)
我看到你修改了刷新间隔并将副本数量设置为0,如果使用旋转磁盘,你可以添加到elasticsearch.yml来提高索引速度:
index.merge.scheduler.max_thread_count: 1
如果您还不关心搜索,ES5群集上的以下内容也可以提供帮助:
PUT /_cluster/settings
{
"transient" : {
"indices.store.throttle.type" : "none"
}
}
确保您已禁用交换功能。在ES5群集中为您的节点分配了多少内存? (由于Elasticsearch的内存寻址限制,您应该使用节点总可用内存的一半,上限为32 GB。
此外,这种大小的增加可能是因为Elasticsearch不会经常合并其片段,并且会等待更平静的时间来合并它们,从而减小磁盘上的大小。只要重新索引没有结束,判断新索引的整体规模就有点早。
以下几篇文章可以提供帮助: