Elasticsearch 1.4.4
を実行している古いクラスタがあります。 私のクラスタには約110億のドキュメントが含まれ、すべてのプライマリのサイズは約4TB
です。エラスティックサーチインデックスのサイズは、1.xより5.xで40%大きくなります。
私は現在、Elasticsearch 5.2.2
にアップグレードしています。これはもちろん、データの再インデックス化を意味します。私はこれが現時点で起こっている別のクラスターを持っています。 _all
と_source
が元のインデックスで無効になっているため、ソースデータベースからインデックスを再作成しています。
私は現在、約7億5千万のドキュメントを再インデックスし、新しいインデックスサイズがすでに350GB
であることに気付きました。私はいくつかの数学を行い、完全にインデックスされたときにインデックスが約5.5TB
に成長するように見えます。それは1.5TBよりインデックスよりもです。私はこれを期待していませんでした。それどころか、私はいくつかの属性を削除したので、サイズの減少を期待していました。これは普通のことですか、何か間違ったことをしましたか?この成長に貢献できる異なるデフォルト設定は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"
}
}
1.4.4インデックスマッピング:
{
"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"
}
}
}
}
}
5.2.2インデックスマッピング:
{
"articles": {
"mappings": {
"article": {
"_all": {
"enabled": false
},
"_source": {
"enabled": false
},
"properties": {
"author": {
"type": "text",
"norms": false,
"analyzer": "keyword"
},
"content": {
"type": "text",
"norms": false
},
"date": {
"type": "date"
},
"feed_canonical": {
"type": "boolean"
},
"feed_id": {
"type": "integer"
},
"feed_subscribers": {
"type": "integer"
},
"title": {
"type": "text",
"norms": false
},
"url": {
"type": "keyword"
}
}
}
}
}
}
このクラスタ上の完全なインデックスの再作成は、約30日かかりますので、すべてのヘルプははるかに高く評価されます...ありがとう!
私はあなたが回転するディスクを使用している場合、あなたはインデックススピードを上げるためにelasticsearch.ymlに追加することができ、リフレッシュ間隔を変更し、0でレプリカの数を入れている参照
ありがとうございます。インデックス作成の速度は私の懸念事項ではありません。それはかなりうまくいっています。サーバーは非常に強力でESに最適化されています。セグメントのマージについて言えば納得のいくものですが、実際には変動に気付いていますが、インデックスはまだまだ大きくなっています。私はそれがセグメントのマージだけで終わりにはそんなに縮小するのではないかと疑う。 – Jacket
私は30日はあなたが持っているサイズのための数日間の地獄ですが(私はあなたのクラスターのサイズも知らないけれども)ディスクスペースについて、この記事は面白い経験を共有しています:https:// blog.discordapp.com/how-discord-indexes-billions-of-messages-e3d5e9be866f#.6zzwqchb6 – Adonis
クラスタは、64G RAM、4x900GB SSDを搭載した3台のサーバ(現在は4台目)でうまく動作しています。ソースデータは11TB相当のMySQLデータベースであり、忙しいサービスを実行するプロダクションDBなので、明らかに私はそれらを限界まで押し込むことはできません。ボトルネックはESではありません。私の唯一の関心事は、最後に全体的なインデックスのサイズです。 – Jacket