全部产品
Search
文档中心

Elasticsearch:Gunakan ILM untuk memisahkan data panas dan data dingin

更新时间:Jun 24, 2025

Tema ini menjelaskan cara menggunakan fitur manajemen siklus hidup indeks (ILM) untuk memisahkan data panas dan dingin dalam kluster Alibaba Cloud Elasticsearch. Pemisahan ini mendukung arsitektur panas-dingin, meningkatkan kinerja baca/tulis kluster, mengotomatiskan pemeliharaan data, serta mengurangi biaya produksi.

Informasi latar belakang

Pada era data besar, volume data di kluster Elasticsearch terus bertambah seiring waktu. Ketika volume data mencapai tingkat tertentu, penggunaan memori, utilisasi CPU, dan throughput I/O kluster juga meningkat, memengaruhi kinerja pencarian teks lengkap. Untuk mengatasi masalah ini, Elasticsearch V6.6.0 dan versi lebih baru menyediakan fitur ILM, yang membagi siklus hidup indeks menjadi empat fase: panas, hangat, dingin, dan hapus. Untuk indeks dalam fase panas, sistem dapat melakukan rollover data ke indeks baru. Untuk indeks dalam fase hangat, dingin, atau hapus, sistem melakukan operasi terkait pada indeks tersebut. Tabel berikut menjelaskan fase-fase tersebut.
FaseDeskripsi
panasJika indeks berada dalam fase ini, data deret waktu dapat ditulis ke indeks secara real-time dan dapat dilakukan rollover berdasarkan jumlah dokumen dalam indeks, volume data yang disimpan dalam indeks, dan durasi indeks. Data dilakukan rollover dengan menggunakan API rollover.
hangatJika indeks berada dalam fase ini, data tidak lagi ditulis ke indeks, dan hanya permintaan data yang dapat dilakukan pada indeks.
dinginJika indeks berada dalam fase ini, indeks tidak lagi diperbarui, sedikit permintaan dilakukan pada indeks, dan proses permintaan melambat.
hapusJika indeks berada dalam fase ini, indeks akan dihapus.
Anda dapat menggunakan salah satu dari metode berikut untuk menambahkan kebijakan ILM ke satu atau lebih indeks:
  • Tambahkan kebijakan ILM ke template indeks: Jika Anda menggunakan metode ini, kebijakan ILM berlaku untuk semua indeks dengan alias yang sama. Dalam topik ini, metode ini digunakan.
  • Tambahkan kebijakan ILM ke indeks tunggal: Jika Anda menggunakan metode ini, kebijakan ILM hanya berlaku untuk indeks saat ini. Indeks baru yang dihasilkan selama rollover tidak terpengaruh oleh kebijakan ILM.
Anda dapat menggunakan fitur ILM untuk data deret waktu, data dingin, dan data panas guna secara signifikan mengurangi biaya penyimpanan data. Topik ini memberikan contoh tentang cara menggunakan fitur ILM untuk data dingin dan data panas. Berikut adalah skenario bisnis:
  1. Tulis data ke indeks dalam kluster Elasticsearch secara real-time. Ketika volume data dalam indeks mencapai batas tertentu, sistem melakukan rollover data berlebih ke indeks baru.
  2. Indeks asli tetap berada dalam fase panas selama 30 menit sebelum masuk ke fase hangat.
  3. Dalam fase hangat, sistem mengecilkan indeks asli dan menggabungkan segmen-segmen dalam indeks. Indeks masuk ke fase dingin 1 jam setelah rollover dimulai.
  4. Dalam fase dingin, sistem memigrasikan indeks dari node panas ke node hangat untuk memisahkan data panas dan dingin. Indeks dihapus 2 jam setelah rollover dimulai.

Perhatian

  • Konfigurasikan kebijakan ILM sesuai dengan model bisnis Anda. Misalnya, disarankan untuk mengonfigurasi alias dan kebijakan ILM yang berbeda untuk indeks dengan struktur berbeda agar lebih mudah dikelola.
  • Jika Anda ingin menggunakan fitur rollover, nama indeks awal harus diakhiri dengan angka enam digit auto-increment, seperti -000001. Jika tidak, kebijakan ILM tidak dapat berlaku. Sebagai contoh, indeks awal bernama myindex-000001. Selama rollover, indeks baru bernama myindex-000002 dibuat. Jika nama indeks tidak memenuhi persyaratan ini, disarankan untuk mengindeks ulang data dalam indeks.
  • Untuk indeks dalam fase panas, sistem menulis data ke indeks. Untuk memastikan data ditulis dalam urutan kronologis, disarankan untuk tidak menulis data ke indeks dalam fase hangat atau dingin. Sebagai contoh, untuk fase hangat, atur actions ke shrink atau read only. Dengan cara ini, indeks hanya bisa dibaca setelah memasuki fase hangat.

Prosedur

  1. Langkah 1: Buat kluster Alibaba Cloud Elasticsearch yang menggunakan arsitektur panas-dingin dan lihat atribut panas atau dingin dari node dalam kluster
    Buat kluster Alibaba Cloud Elasticsearch, dan tentukan atribut panas atau dingin untuk node data dalam kluster.
  2. Langkah 2: Konfigurasikan kebijakan ILM untuk indeks
    Definisikan kebijakan ILM dan lampirkan kebijakan tersebut ke template indeks.
  3. Langkah 3: Verifikasi distribusi data
    Periksa apakah shard indeks dalam fase dingin didistribusikan pada node hangat.
  4. Langkah 4: Perbarui kebijakan ILM
    Perbarui kebijakan ILM.
  5. Langkah 5: Alihkan kebijakan ILM
    Alihkan kebijakan ILM.

Langkah 1: Buat kluster Alibaba Cloud Elasticsearch yang menggunakan arsitektur panas-dingin dan lihat atribut panas atau dingin dari node dalam kluster

Kluster Elasticsearch yang menggunakan arsitektur panas-dingin berisi node panas dan node hangat. Arsitektur ini meningkatkan kinerja dan stabilitas kluster Elasticsearch. Tabel berikut menjelaskan perbedaan antara node panas dan node hangat.

Tipe Node

Jenis data yang disimpan

Kinerja baca dan tulis

Spesifikasi

Disk

Node panas

Data terbaru, seperti data log dua hari terakhir.

Tinggi

Tinggi, seperti 32 vCPU dan 64 GiB memori

Kami sarankan Anda menggunakan SSD standar. Anda dapat menentukan ruang penyimpanan berdasarkan volume data.

Node hangat

Data historis, seperti data log sebelum dua hari terakhir.

Rendah

Rendah, seperti 8 vCPU dan 32 GiB memori

Kami sarankan Anda menggunakan ultra disk. Anda dapat menentukan ruang penyimpanan berdasarkan volume data.

  1. Buat kluster Elasticsearch yang menggunakan arsitektur panas-dingin. Saat membeli kluster Elasticsearch, Anda dapat membeli node hangat untuk membuat kluster dengan arsitektur panas-dingin. Untuk informasi lebih lanjut, lihat Buat Kluster Alibaba Cloud Elasticsearch.

    Setelah membuat kluster yang berisi node hangat, sistem menambahkan parameter -Enode.attr.box_type ke parameter startup node.

    • Node panas: -Enode.attr.box_type=hot

    • Node hangat: -Enode.attr.box_type=warm

    null
    • Node data menjadi node panas hanya setelah Anda membeli node hangat.

    • Dalam contoh ini, kluster Alibaba Cloud Elasticsearch V6.7.0 digunakan. Semua operasi dan gambar yang disediakan hanya cocok untuk kluster versi ini. Jika Anda menggunakan kluster versi lain, operasi yang diperlukan dalam konsol Elasticsearch berlaku.

  2. Masuk ke konsol Kibana kluster. Di panel navigasi sisi kiri konsol Kibana, klik Dev Tools.

    Untuk informasi lebih lanjut, lihat Masuk ke Konsol Kibana.

  3. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk melihat atribut panas atau dingin dari node dalam kluster:
    GET _cat/nodeattrs?v&h=host,attr,value

    Jika perintah berhasil dijalankan, hasil yang ditunjukkan pada gambar berikut dikembalikan. Gambar ini menunjukkan bahwa kluster Elasticsearch berisi tiga node panas dan dua node hangat untuk mendukung arsitektur panas-dingin.冷热架构集群

Langkah 2: Konfigurasikan kebijakan ILM untuk indeks

  1. Di konsol Kibana kluster, jalankan perintah berikut untuk mendefinisikan kebijakan ILM:
    PUT /_ilm/policy/game-policy
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "1GB",
                "max_age": "1d",
                "max_docs": 1000
              }
            }
          },
          "warm": {
            "min_age": "30m",
            "actions": {
              "forcemerge": {
                    "max_num_segments":1
                  },
              "shrink": {
                    "number_of_shards":1
                  }
            }
          },
          "cold": {
            "min_age": "1h",
            "actions": {
              "allocate": {
                "require": {
                  "box_type": "warm"
                }
              }
            }
          },
          "delete": {
            "min_age": "2h",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
    ParameterDeskripsi
    panasRollover dipicu jika indeks yang terlampir kebijakan ILM memenuhi salah satu kondisi berikut: Volume data dalam indeks mencapai 1 GB, indeks telah digunakan lebih dari satu hari, dan jumlah dokumen dalam indeks melebihi 1.000. Selama rollover, sistem membuat indeks dan mengaktifkan kebijakan ILM untuk indeks baru. Indeks asli masuk ke fase hangat 30 menit setelah rollover.
    null

    Jika nilai max_docs, max_size, atau max_age tercapai selama rollover, Elasticsearch mengarsipkan indeks.

    hangatSetelah indeks masuk ke fase hangat, sistem mengecilkannya menjadi indeks yang hanya memiliki satu primary shard dan menggabungkan segmen dalam indeks menjadi satu segmen. Indeks masuk ke fase dingin 1 jam setelah rollover dimulai.
    dinginSetelah indeks masuk ke fase dingin, sistem memigrasikan indeks dari node panas ke node hangat. Indeks masuk ke fase hapus 2 jam setelah rollover dimulai.
    hapusSetelah indeks masuk ke fase hapus, indeks dihapus.
    null
    • Setelah kebijakan ILM dibuat, Anda tidak dapat mengubah nama kebijakan.

    • Dalam langkah ini, Anda dapat menentukan parameter max_age dalam satuan minimum detik. Jika Anda menggunakan konsol Kibana untuk membuat kebijakan ILM, Anda hanya dapat menentukan parameter ini dalam satuan minimum jam.

  2. Buat template indeks.
    Dalam konfigurasi settings, tentukan atribut panas. Dengan cara ini, data dapat disimpan di node panas setelah ditulis.
    PUT _template/gamestabes_template
    {
      "index_patterns" : ["gamestabes-*"],
      "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "index.routing.allocation.require.box_type":"hot",
        "index.lifecycle.name": "game-policy", 
        "index.lifecycle.rollover_alias": "gamestabes"
      }
    }
    ParameterDeskripsi
    index.routing.allocation.require.box_typeTipe node ke mana indeks yang dihasilkan selama rollover dialokasikan.
    index.lifecycle.nameNama kebijakan ILM.
    index.lifecycle.rollover_aliasAlias indeks yang dihasilkan selama rollover.
  3. Buat indeks berdasarkan nomor auto-increment.
    PUT gamestabes-000001
    {
    "aliases": {
        "gamestabes":{
           "is_write_index": true
            }
          }
    }

    Anda juga dapat membuat indeks berdasarkan waktu. Untuk informasi lebih lanjut, lihat Menggunakan matematika tanggal.

  4. Tulis data ke indeks berdasarkan alias indeks.
    Sistem secara berkala memeriksa apakah indeks sesuai dengan kebijakan ILM. Jika sistem mendeteksi bahwa indeks sesuai dengan kebijakan ILM, sistem melakukan rollover data ke indeks baru.
    PUT gamestabes/_doc/1
    {
        "EU_Sales" : 3.58,
        "Genre" : "Platform",
        "Global_Sales" : 40.24,
        "JP_Sales" : 6.81,
        "Name" : "Super Mario Bros.",
        "Other_Sales" : 0.77,
        "Platform" : "NES",
        "Publisher" : "Nintendo",
        "Year_of_Release" : "1985",
        "na_Sales" : 29.08
    }
    null Secara default, sistem memeriksa indeks yang sesuai dengan kebijakan ILM pada interval 10 menit. Anda dapat mengonfigurasi parameter indices.lifecycle.poll_interval untuk mengubah interval pemeriksaan. Setelah data dirollover untuk indeks, indeks masuk ke fase berikutnya.
  5. Filter indeks berdasarkan fase siklus hidup dan lihat konfigurasi detail indeks.
    1. Di panel navigasi sisi kiri, klik Management.
    2. Di bagian Elasticsearch, klik Index Management.
    3. Di bagian Index management, klik Lifecycle phase di sebelah Lifecycle status dan pilih fase.
      Filter indexes based on lifecycle phases
    4. Klik nama indeks untuk melihat detail tentang indeks.
      View index details

Langkah 3: Verifikasi distribusi data

  1. Kueri indeks dalam fase dingin dan lihat konfigurasi indeks.
    Query indexes in the cold phase
  2. Kueri distribusi shard untuk indeks dalam fase dingin.
    GET _cat/shards?shrink-gamestables-000012
    Jika perintah berhasil dijalankan, hasil yang ditunjukkan pada gambar berikut dikembalikan. Gambar tersebut menunjukkan bahwa shard indeks dalam fase dingin didistribusikan pada node hangat.Command output

Langkah 4: Perbarui kebijakan ILM

  1. Perbarui kebijakan ILM yang sedang berjalan.
    Update the ILM policy
  2. Lihat versi kebijakan yang diperbarui.
    1. Di panel navigasi sisi kiri, klik Management.
    2. Di bagian Elasticsearch, klik Index Lifecycle Policies.
    3. Di bagian Index lifecycle policies, lihat versi kebijakan yang diperbarui.
      Nomor versi kebijakan yang diperbarui adalah satu lebih banyak dari nomor versi kebijakan asli. Kebijakan yang diperbarui mulai berlaku dari rollover berikutnya.View the version of the updated policy

Langkah 5: Alihkan kebijakan ILM

  1. Buat kebijakan ILM lain.
    PUT /_ilm/policy/game-new
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "3GB",
                "max_age": "1d",
                "max_docs": 1000
              }
            }
          },
          "warm": {
            "min_age": "30m",
            "actions": {
              "forcemerge": {
                    "max_num_segments":1
                  },
              "shrink": {
                    "number_of_shards":1
                  }
            }
          },
          "cold": {
            "min_age": "1h",
            "actions": {
              "allocate": {
                "require": {
                  "box_type": "warm"
                }
              }
            }
          },
          "delete": {
            "min_age": "2h",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
  2. Lampirkan kebijakan ILM baru ke template indeks.
    PUT _template/gamestabes_template
    {
      "index_patterns" : ["gamestabes-*"],
      "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "index.routing.allocation.require.box_type":"hot",
        "index.lifecycle.name": "game-new", 
        "index.lifecycle.rollover_alias": "gamestabes"
      }
    }
    null
    • Kebijakan baru mulai berlaku dari rollover berikutnya.
    • Jika Anda ingin melampirkan kebijakan baru ke indeks yang dibuat berdasarkan kebijakan asli, Anda dapat menjalankan perintah PUT gamestabes-*/_settings. Untuk informasi lebih lanjut, lihat Mengganti kebijakan untuk indeks.

FAQ

T: Bagaimana cara mengonfigurasi interval pemeriksaan untuk kebijakan ILM?

A: Sistem secara berkala memeriksa indeks yang sesuai dengan kebijakan ILM. Interval default adalah 10 menit. Jika indeks yang sesuai terdeteksi, sistem melakukan rollover data untuk indeks tersebut. Sebagai contoh, Anda mengatur max_docs menjadi 1000 saat membuat kebijakan ILM. Dalam kasus ini, jika sistem mendeteksi bahwa jumlah dokumen dalam indeks mencapai 1.000 selama pemeriksaan, sistem memicu rollover untuk indeks tersebut. Anda dapat mengonfigurasi parameter indices.lifecycle.poll_interval untuk mengubah interval pemeriksaan. Ini memastikan bahwa data dirollover untuk indeks secara tepat waktu.
null

Atur parameter ini ke nilai yang sesuai. Nilai kecil dapat menyebabkan overload node. Dalam contoh ini, parameter ini diatur ke 1m.

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"1m"
  }
}