Elasticsearch Reindex Semua Indeks dan Periksa Statusnya

Saat Anda bekerja dengan database, Anda pasti perlu membuat perubahan seperti menambahkan, menghapus, dan memodifikasi data.

Saat Anda memodifikasi data dalam indeks Elasticsearch, ini dapat menyebabkan waktu henti karena fungsionalitas selesai dan data diindeks ulang.

Tutorial ini akan memberi Anda cara yang jauh lebih baik untuk memperbarui indeks tanpa mengalami downtime dengan sumber data yang ada. Menggunakan API pengindeksan ulang Elasticsearch, kami akan menyalin data dari sumber tertentu ke sumber lain.

Mari kita mulai.

CATATAN: Sebelum kita mulai, operasi pengindeksan ulang membutuhkan banyak sumber daya, terutama pada indeks besar. Untuk meminimalkan waktu yang diperlukan untuk Pengindeksan Ulang, nonaktifkan number_of_replicas dengan mengatur nilai ke 0 dan aktifkan setelah proses selesai.

Aktifkan _Bidang Sumber

Operasi pengindeksan ulang mengharuskan bidang sumber diaktifkan pada semua dokumen dalam indeks sumber. Perhatikan bahwa bidang sumber tidak diindeks dan tidak dapat dicari tetapi berguna untuk berbagai permintaan.

Aktifkan bidang _Source dengan menambahkan entri seperti yang ditunjukkan di bawah ini:

PUT index_1
{
  “mappings”: {
    "_source": {
      "enabled": true
    }
  }
}

Mengindeks Ulang Semua Dokumen

Untuk mengindeks ulang dokumen, kita perlu menentukan sumber dan tujuan. Sumber dan tujuan dapat berupa indeks, alias indeks, dan aliran data yang ada. Anda dapat menggunakan indeks dari cluster lokal atau remote.

CATATAN: Agar pengindeksan berhasil terjadi, sumber dan tujuan tidak boleh serupa. Anda juga harus mengonfigurasi tujuan seperti yang diperlukan sebelum pengindeksan ulang karena tidak menerapkan pengaturan dari sumber atau template terkait.

Sintaks umum untuk Reindexing adalah sebagai:

POST /_reindex

Mari kita mulai dengan membuat dua indeks. Yang pertama akan menjadi sumber, dan yang lainnya akan menjadi tujuan.

PUT /source_index
{
  "settings": {"number_of_replicas": 0, "number_of_shards": 1},
  "mappings": {"_source": {"enabled": true}},"aliases": {
    "alias_1": {},
    "alias_2": {
      "filter": {"term": {
        "user.id": "kibana"
      }},"routing": "1"
    }
  }
}

Perintah cURL adalah:

curl -XPUT "http://localhost:9200/source_index" -H 'Content-Type: application/json' -d'{  "settings": {"number_of_replicas": 0, "number_of_shards": 1},  "mappings": {"_source": {"enabled": true}},"aliases": {    "alias_1": {},    "alias_2": {      "filter": {"term": {        "user.id": "kibana"      }},"routing": "1"    }  }}'

Sekarang untuk indeks tujuan (Anda dapat menggunakan perintah di atas dan mengubah beberapa hal atau menggunakan yang diberikan di bawah ini):

PUT /destination_index 
{
  "settings": {"number_of_replicas": 0, "number_of_shards": 1},
  "mappings": {"_source": {"enabled": true}},"aliases": {
    "alias_3": {},
    "alias_4": {
      "filter": {"term": {
        "user.id": "kibana"
      }},"routing": "1"
    }
  }
}

Seperti biasa, user cURL dapat menggunakan perintah:

curl -XPUT "http://localhost:9200/destination_index" -H 'Content-Type: application/json' -d'{  "settings": {"number_of_replicas": 0, "number_of_shards": 1},  "mappings": {"_source": {"enabled": true}},"aliases": {    "alias_3": {},    "alias_4": {      "filter": {"term": {        "user.id": "kibana"      }},"routing": "1"    }  }}'

Sekarang, kami memiliki indeks yang ingin kami gunakan, kami kemudian dapat melanjutkan untuk mengindeks ulang dokumen.

Pertimbangkan permintaan di bawah ini yang menyalin data dari source_index ke destination_index:

POST _reindex
{
  “source”: {
    "index": "source_index"
  },
  "dest": {
    "index": "destination_index"
  }
}

Perintah cURL untuk ini adalah:

curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'{  "source": {    "index": ".kibana"  },  "dest": {    "index": "destination_index"  }}'

Menjalankan perintah ini akan memberi Anda informasi terperinci tentang operasi yang dilakukan.

CATATAN : source_index harus memiliki data.

{
  "took" : 2836,
  "timed_out" : false,
  "total" : 13059,
  "updated " : 0,
  "created" : 13059,
  "deleted" : 0,
  "batches" : 14,
  "version_conflicts" : 0,
  "noops" : 0,
  "retries" : {
    "bulk" : 0,
    "search" : 0
  },
  "throttled_millis" : 0,
  "requests_per_second" : -1.0,
  "throttled_until_millis" : 0,
  "failures" : [ ]
}

Memeriksa Status Pengindeksan Ulang

Anda dapat melihat status operasi Pengindeksan Ulang hanya dengan menggunakan _tasks. Misalnya, pertimbangkan permintaan di bawah ini:

GET /_tasks?detailed=true&actions=*reindex&group_by=parents

Perintah cURL adalah:

curl -XGET "http://localhost:9200/_tasks?detailed=true&actions=*reindex&group_by=parents"

Itu akan memberi Anda informasi terperinci tentang proses pengindeksan ulang seperti yang ditunjukkan di bawah ini:

{
  "tasks" : {
    "FTd_2iXjSXudN_Ua4tZhHg:51847" : {
      "node" : "FTd_2iXjSXudN_Ua4tZhHg",
      "id" : 51847,
      "type" : "transport",
      "action" : "indices:data/write/reindex",
      "status" : {
        "total" : 13059,
        "updated" : 9000,
        "created" : 0,
        "deleted" : 0,
        "batches" : 10,
        "version_conflicts" : 0,
        "noops" : 0,
        "retries" : {
          "bulk" : 0,
          "search" : 0
        },
        "throttled_millis" : 0,
        "requests_per_second" : -1.0,
        "throttled_until_millis" : 0
      },
      "description" : "reindex from [source_index] to [destination_index][_doc]",
      "start_time_in_millis" : 1611247308063,
      "running_time_in_nanos" : 2094157836,
      "cancellable" : true,
      "headers" : { }
    }
  }
}

Kesimpulan

Kami telah membahas semua yang perlu Anda ketahui tentang menggunakan Elasticsearch Reindexing API untuk menyalin dokumen dari satu indeks (sumber) ke indeks lainnya (tujuan). Meskipun ada lebih banyak lagi untuk Reindexing API, panduan ini akan membantu Anda memulai.

Related Posts