Plugin aliyun-codec mengompresi file Elasticsearch berorientasi baris (source), berorientasi kolom (doc values), dan terbalik (postings), serta mendukung fitur source_reuse_doc_values. Plugin ini ideal untuk skenario dengan volume penulisan tinggi dan biaya penyimpanan indeks besar, seperti pencatatan log (logging) dan analisis deret waktu (time series).
Catatan penggunaan
-
Instal plugin sebelum menggunakannya. Untuk informasi lebih lanjut, lihat Instal atau uninstal plugin bawaan.
-
Plugin aliyun-codec hanya didukung pada instans Elasticsearch 7.10.0.
-
Fitur kompresi indeks memerlukan versi kernel
1.5.0atau lebih baru, dan fitursource_reuse_doc_valuesmemerlukan versi kernel1.6.0atau lebih baru. Jika versi kernel Anda saat ini tidak memenuhi persyaratan ini, Anda harus terlebih dahulu upgrade kernel.
Referensi kinerja
Data kinerja berikut direkam dalam lingkungan pengujian tertentu dan hanya bersifat referensi.
Lingkungan pengujian: Satu indeks berukuran 1,2 TB dengan 22 shard. Kompresi berorientasi baris, berorientasi kolom, dan terbalik diaktifkan, semuanya menggunakan algoritma kompresi zstd. Set data terdiri dari log produksi Alibaba Cloud Elasticsearch.
Kompresi indeks: Dibandingkan dengan kluster tanpa kompresi indeks:
-
Throughput penulisan: Tidak berubah.
-
Ukuran indeks keseluruhan: Berkurang 40%.
-
Latensi dalam skenario kueri intensif I/O: Berkurang 50%.
source_reuse_doc_values: Dibandingkan dengan kluster yang tidak mengaktifkan fitur ini:
-
Throughput penulisan: Tidak berubah.
-
Ukuran indeks keseluruhan: Berkurang hingga 40%. Persentase pengurangan bergantung pada proporsi bidang yang mengaktifkan fitur
source_reuse_doc_valuesdalam indeks. -
Latensi dalam skenario kueri intensif I/O: Bergantung pada faktor-faktor seperti proporsi bidang yang mengaktifkan fitur tersebut dan tipe disk node.
Gunakan fitur kompresi indeks
Pengaturan index.codec bersifat statis. Anda harus menutup indeks sebelum mengubah pengaturan ini dan membukanya kembali setelahnya.
Sebagai contoh, untuk mengaktifkan kompresi pada indeks bernama test, jalankan perintah berikut:
POST test/_close
PUT test/_settings
{
"index.codec" : "ali"
}
POST test/_open
Dengan konfigurasi ini, Elasticsearch secara default menggunakan algoritma zstd untuk mengompresi file berorientasi baris (source), berorientasi kolom (doc values), dan terbalik (postings) untuk indeks tersebut.
Anda juga dapat menentukan algoritma kompresi untuk tipe file tertentu. Contoh berikut menonaktifkan kompresi untuk file terbalik dan menggunakan algoritma zstd untuk file berorientasi baris dan berorientasi kolom. Untuk menonaktifkan kompresi pada tipe file tertentu, atur parameter yang sesuai menjadi "".
POST test/_close
PUT test/_settings
{
"index.codec":"ali",
"index.doc_value.compression.default":"zstd",
"index.postings.compression":"",
"index.source.compression":"zstd"
}
POST test/_open
Tabel berikut mencantumkan parameter konfigurasi indeks.
|
Parameter |
Deskripsi |
|
index.doc_value.compression.default |
* |
|
index.postings.compression |
|
|
index.source.compression |
Menentukan algoritma kompresi untuk file berorientasi baris (source). Nilai yang valid: * |
|
index.postings.pfor.enabled |
Mengaktifkan optimasi pengkodean untuk postings indeks terbalik. Nilai yang valid adalah |
Gunakan fitur source_reuse_doc_values
Elasticsearch menyimpan beberapa salinan data di _source, indeks terbalik, dan doc_values. Fitur source_reuse_doc_values mengurangi ukuran indeks dengan menghapus data dari _source yang sudah ada di doc_values.
Aktifkan fitur source_reuse_doc_values
Fitur source_reuse_doc_values hanya dapat diaktifkan saat pembuatan indeks dan tidak dapat dinonaktifkan setelahnya.
PUT test
{
"settings": {
"index": {
"ali_codec_service": {
"source_reuse_doc_values": {
"enabled": true
}
}
}
}
}
Sesuaikan pengaturan source_reuse_doc_values
Setelah Anda mengaktifkan fitur source_reuse_doc_values, Anda dapat menyesuaikan pengaturan berikut.
Sesuaikan jumlah maksimum bidang
Jika jumlah bidang yang mengaktifkan source_reuse_doc_values melebihi nilai yang ditentukan, Elasticsearch akan melemparkan pengecualian (exception) atau secara otomatis menonaktifkan fitur tersebut. Nilai default-nya adalah 50.
PUT _cluster/settings
{
"persistent": {
"apack.ali_codec_service.source_reuse_doc_values.max_fields": 100
}
}
Tentukan apakah batas maksimum bidang diberlakukan secara ketat
-
true: Elasticsearch melemparkan pengecualian jika batas dilampaui. -
false: Elasticsearch secara otomatis menonaktifkan fitursource_reuse_doc_valuesjika batas dilampaui.
PUT _cluster/settings
{
"persistent": {
"apack.ali_codec_service.source_reuse_doc_values.strict_max_fields": true
}
}
Sesuaikan konkurensi saat membaca nilai bidang
Saat mengambil dokumen asli, fitur ini membaca dan menggabungkan nilai dari bidang tempat fitur diaktifkan secara konkuren. Konkurensi default-nya adalah 5.
PUT test/_settings
{
"index": {
"ali_codec_service": {
"source_reuse_doc_values": {
"fetch_slice": 2
}
}
}
}
Sesuaikan ukuran kolam thread dan antrian
Secara default, ukuran kolam thread sama dengan jumlah core node, dan ukuran antrian adalah 1.000. Anda hanya dapat mengubah pengaturan ini dengan memodifikasi file YML. Untuk petunjuknya, lihat Konfigurasi parameter YML.
apack.doc_values_fetch:
size: 8
queue_size: 1000