Kueri rentang waktu pada indeks deret waktu yang besar dapat berjalan lambat karena Elasticsearch standar memindai semua segmen tanpa mempertimbangkan apakah segmen tersebut berisi data yang relevan. Fitur pemangkasan mengatasi masalah ini dengan mengubah cara Alibaba Cloud Elasticsearch menggabungkan segmen indeks—dengan menjaga data yang berdekatan dalam waktu tetap bersama, sehingga kueri dapat melewati segmen yang sepenuhnya berada di luar rentang yang dikueri. Hal ini mengurangi latensi kueri hingga 40%.
Jalankan semua perintah dalam topik ini di Konsol Kibana. Untuk informasi selengkapnya, lihat Masuk ke Konsol Kibana.
Prasyarat
Kluster Alibaba Cloud Elasticsearch V6.7.0 atau V7.10.0 telah dibuat. Versi kernel kluster V6.7.0 adalah 1.2.0 atau lebih baru. Untuk informasi selengkapnya tentang cara membuat kluster, lihat Buat kluster Alibaba Cloud Elasticsearch.
Versi yang didukung
Fitur pemangkasan tersedia pada:
Alibaba Cloud Elasticsearch V6.7.0 dengan versi kernel 1.2.0 atau lebih baru
Alibaba Cloud Elasticsearch V7.10.0
Cara kerja fitur pemangkasan
Elasticsearch standar menggabungkan segmen indeks hanya berdasarkan ukuran—segmen dengan ukuran serupa digabung, sehingga satu segmen dapat mencakup rentang waktu yang tidak beraturan. Akibatnya, kueri rentang waktu harus memindai semua segmen untuk menemukan data yang relevan.
Dengan pemangkasan diaktifkan, penggabungan segmen mempertimbangkan baik ukuran maupun bidang deret waktu. Segmen dengan ukuran serupa yang juga berisi data dari periode waktu yang berdekatan akan digabung menjadi satu. Setiap segmen hasil penggabungan menyimpan rentang waktu yang berurutan, sehingga Elasticsearch dapat melewati segmen yang sepenuhnya berada di luar rentang waktu yang dikueri.
| Elasticsearch Standar | Alibaba Cloud Elasticsearch (pemangkasan diaktifkan) | |
|---|---|---|
| Kebijakan penggabungan segmen | Hanya berdasarkan ukuran; segmen mencakup rentang waktu arbitrer | Berdasarkan ukuran dan bidang deret waktu; setiap segmen menyimpan rentang waktu berurutan |
| Kinerja kueri | Memindai semua segmen untuk setiap kueri | Melewati segmen di luar rentang waktu yang dikueri; meningkatkan kinerja hingga 40% |
Batasan
Aktifkan pemangkasan saat pembuatan indeks. Pemangkasan memengaruhi cara segmen digabung selama pengindeksan dan kompaksi. Jika Anda mengaktifkannya setelah indeks dibuat, kinerja kueri yang diharapkan tidak dapat tercapai.
Jangan aktifkan kembali pemangkasan setelah menonaktifkannya. Setelah Anda menonaktifkan fitur pemangkasan untuk suatu indeks, disarankan agar Anda tidak mengaktifkan kembali fitur tersebut pada indeks yang sama. Jika Anda mengaktifkannya kembali dan penggabungan segmen indeks tersebut mencakup data non-deret waktu, kinerja kueri yang diharapkan tidak dapat tercapai.
Bidang deret waktu harus bertipe DATE atau LONG.
Aktifkan fitur pemangkasan
Tentukan bidang deret waktu saat membuat indeks. Contoh berikut menggunakan timestamp sebagai bidang deret waktu:
PUT index-1/_settings
{
"index" : {
"merge.policy.time_series_field" : "timestamp"
}
}Kueri data deret waktu
Gunakan filter range pada bidang deret waktu untuk memanfaatkan pemangkasan. Elasticsearch akan melewati segmen yang seluruh rentang waktunya berada di luar filter dan hanya mencari segmen yang relevan.
Contoh berikut memfilter data berdasarkan bidang timestamp dan bidang region:
POST index-1/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"timestamp": {
"format": "yyyy-MM-dd HH:mm:ss",
"gte": "2020-06-01 23:00:00",
"lt": "2020-06-06 23:05:00",
"time_zone": "+08:00"
}
}
},
{
"terms": {
"region": [
"sh"
]
}
}
]
}
}
}Nonaktifkan fitur pemangkasan
Menonaktifkan pemangkasan memerlukan penutupan indeks, pembaruan pengaturannya, lalu membuka kembali indeks tersebut.
Setelah menonaktifkan pemangkasan, jangan aktifkan kembali pada indeks yang sama. Lihat Batasan untuk detail selengkapnya.
Tutup indeks.
POST index-1/_closeAtur
merge.policy.time_series_fieldkenulluntuk menonaktifkan pemangkasan.PUT index-1/_settings { "index" : { "merge.policy.time_series_field" : null } }Buka kembali indeks.
POST index-1/_open