Tüm Ürünler
Search
Belge Merkezi

Elasticsearch:Migrate self-managed Elasticsearch to Alibaba Cloud Elasticsearch with OSS

Son Güncelleme:Oct 04, 2026

Bir OSS anlık görüntü deposu oluşturarak, dizinlerinizi yedekleyerek ve anlık görüntüleri hedef kümeye geri yükleyerek verileri kendi yönettiğiniz bir Elasticsearch kümesinden Alibaba Cloud Elasticsearch'e geçirin.

Sınırlamalar

  • OSS paketi aşağıdaki gereksinimleri karşılamalıdır:

    • Depolama sınıfı Standard olmalıdır.

    • Paket, Alibaba Cloud Elasticsearch kümesiyle aynı bölgede bulunmalıdır.

  • Küme sürümü: Aynı ana Elasticsearch sürümü içinde daha eski bir alt sürümden daha yeni bir alt sürüme veri geçişi yapabilirsiniz (örneğin, 8.15.1'den 8.17.1'e). Ana sürümler arasında veri geçişi yapılması (örneğin, 7.7.1'den 8.17.1'e) önerilmez.

    Not

    Alibaba Cloud Elasticsearch, açık kaynaklı Elasticsearch ile tamamen uyumludur. Ancak, veri türleri ana açık kaynak sürümleri arasında değişebilir. Örneğin, 5.x sürümündeki string türü, 6.x sürümünde text ve keyword olarak ayrılmıştır. Ana sürümler arasında veri geçişi yapmak alan türü tanıma hatalarına neden olabilir.

Önkoşullar

  • Bir Alibaba Cloud Elasticsearch kümesi ve bir OSS paketi oluşturun. Alibaba Cloud Elasticsearch kümesi, kendi yönettiğiniz kümeyle aynı ana sürüme sahip olmalıdır.

  • RAM kullanıcısının AliyunOSSFullAccess izin ilkesine sahip olduğundan emin olun. RAM kullanıcısına izin verin.

Arka plan

Bu örnekte, geçiş işlemini göstermek için products_info adlı bir dizin kullanılmaktadır.

Dizin oluşturun ve veri ekleyin

Dizin oluşturun:

curl -X PUT "http://localhost:9200/products_info" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "productName": { "type": "text" },
      "annual_rate": { "type": "text" },
      "describe": { "type": "text" }
    }
  }
}'

Veri ekleyin:

curl -X POST "http://localhost:9200/products_info/_bulk" -H 'Content-Type: application/json' -d'
{ "index": { "_id": "1" } }
{ "productName": "Financial Product A", "annual_rate": "3.2200%", "describe": "180-day fixed-term investment, 20,000 minimum, stable returns, optional message notifications." }
{ "index": { "_id": "2" } }
{ "productName": "Financial Product B", "annual_rate": "3.1100%", "describe": "90-day investment product, 10,000 minimum, daily return notifications." }
{ "index": { "_id": "3" } }
{ "productName": "Financial Product C", "annual_rate": "3.3500%", "describe": "270-day investment product, 40,000 minimum, instant daily return notifications." }
{ "index": { "_id": "4" } }
{ "productName": "Financial Product D", "annual_rate": "3.1200%", "describe": "90-day investment product, 12,000 minimum, daily return notifications." }
{ "index": { "_id": "5" } }
{ "productName": "Financial Product E", "annual_rate": "3.0100%", "describe": "Recommended 30-day investment product, 8,000 minimum, daily return notifications." }
{ "index": { "_id": "6" } }
{ "productName": "Financial Product F", "annual_rate": "2.7500%", "describe": "Popular short-term product, 3-day term, no fees, 500 minimum, get return notifications via SMS." }
'

curl -X GET "http://localhost:9200/products_info/_search?pretty" komutunu çalıştırın. Aşağıdaki yanıtı alırsanız, dizin verileri hazırdır:

Örnek yanıt

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 6,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "kRjec5gBZDsv98SA0Bmx",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product A",
          "annual_rate" : "3.2200%",
          "describe" : "180-day fixed-term investment, 20,000 minimum, stable returns, optional message notifications."
        }
      },
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "khjec5gBZDsv98SA0Bmy",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product B",
          "annual_rate" : "3.1100%",
          "describe" : "90-day investment product, 10,000 minimum, daily return notifications."
        }
      },
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "kxjec5gBZDsv98SA0Bmy",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product C",
          "annual_rate" : "3.3500%",
          "describe" : "270-day investment product, 40,000 minimum, instant daily return notifications."
        }
      },
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "lBjec5gBZDsv98SA0Bmy",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product D",
          "annual_rate" : "3.1200%",
          "describe" : "90-day investment product, 12,000 minimum, daily return notifications."
        }
      },
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "lRjec5gBZDsv98SA0Bmy",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product E",
          "annual_rate" : "3.0100%",
          "describe" : "Recommended 30-day investment product, 8,000 minimum, daily return notifications."
        }
      },
      {
        "_index" : "products_info",
        "_type" : "_doc",
        "_id" : "lhjec5gBZDsv98SA0Bmy",
        "_score" : 1.0,
        "_source" : {
          "productName" : "Financial Product F",
          "annual_rate" : "2.7500%",
          "describe" : "Popular short-term product, 3-day term, no fees, 500 minimum, get return notifications via SMS."
        }
      }
    ]
  }
}

Çözüm özeti

image

Büyük veri kümeleri (500 GB üzeri) için en uygun çözümdür. İlk tam yedeklemenin ardından yalnızca artımlı değişiklikler senkronize edilir, bu da toplam geçiş süresini azaltır. Buluta geçiş, sürümler arası yükseltmeler ve olağanüstü durum kurtarma senaryoları için uygundur.

Veri geçişi

Adım 1: elasticsearch-repository-oss eklentisini yükleyin

  1. Kendi yönettiğiniz Elasticsearch kümesini barındıran ECS örneğine bağlanın ve elasticsearch-repository-oss eklentisini indirin. Bu örnekte 8.17.0 sürümü kullanılmaktadır.

    wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v8.17.0/elasticsearch-repository-oss-8.17.0.zip

    Diğer sürümler için bkz. elasticsearch-repository-oss eklentisinin diğer sürümleri.

  2. Eklentiyi Elasticsearch kümenize yükleyin.

    # Install the plug-in by unzipping it to the plugins directory of each node in your Elasticsearch installation.
    sudo unzip -d /usr/local/elasticsearch-8.17.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-8.17.0.zip
  3. Kendi yönettiğiniz Elasticsearch kümesindeki düğümleri başlatın.

    cd /usr/local/elasticsearch-8.17.0
    ./bin/elasticsearch -d

Adım 2: Kendi yönettiğiniz küme için bir anlık görüntü deposu oluşturun

Kendi yönettiğiniz Elasticsearch kümesini barındıran sunucuda, bir anlık görüntü deposu oluşturmak için aşağıdaki komutu çalıştırın:

Not

Bu komut Elasticsearch 8.x için geçerlidir. Diğer sürümler için bkz. Manuel yedekleme ve geri yükleme.

curl -X PUT "http://localhost:9200/_snapshot/<yourBackupName>" -H 'Content-Type: application/json' -d'
{
    "type": "oss",
    "settings": {
        "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
        "oss.client.access_key_id": "xxxx",
        "oss.client.secret_access_key": "xxxx",
        "oss.client.bucket": "<yourBucketName>",
        "oss.client.base_path":"snapshot/",
        "oss.client.compress": true
    }
}
'

Parametre

Açıklama

<yourBackupName>

Depo için özel bir ad.

type

Depo türü. oss olarak ayarlayın.

oss.client.endpoint

OSS paket uç noktası. Bölgeler ve uç noktalar.

Not

Kendi yönettiğiniz Elasticsearch kümeniz için kullanılan ECS örneği, OSS paketiyle aynı bölgedeyse iç uç noktayı kullanın. Aksi takdirde genel uç noktayı kullanın.

oss.client.access_key_id

OSS paketini oluşturmak için kullanılan hesabın AccessKey ID'si. AccessKey çifti edinin.

oss.client.secret_access_key

OSS paketini oluşturmak için kullanılan hesabın AccessKey gizli anahtarı. AccessKey çifti edinin.

oss.client.bucket

OSS paketinin adı.

oss.client.base_path

Anlık görüntüler için depolama yolu.

oss.client.compress

Sıkıştırmayı etkinleştirip etkinleştirmeyeceğinizi belirtir:

  • true: Depolama alanından tasarruf etmek için sıkıştırmayı etkinleştirin.

  • false: Sıkıştırmayı devre dışı bırakın.

Başarılı bir oluşturma işlemi {"acknowledged": true} yanıtını döndürür.

Adım 3: Bir dizin anlık görüntüsü oluşturun

Kendi yönettiğiniz Elasticsearch kümesinde, products_info dizinini yedeklemek için snapshot_1 adlı bir anlık görüntü oluşturun.

curl -X PUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -H "Content-Type: application/json" -d'
{
"indices": "products_info"
}'

<yourBackupName> yerine, anlık görüntü deposunu oluştururken belirttiğiniz depo adını girin.

Başarılı bir oluşturma işlemi {"accepted": true} yanıtını döndürür.

İlerlemeyi kontrol etmek için curl -X GET localhost:9200/_snapshot/<yourBackupName>/snapshot_1/_status komutunu çalıştırın. state değeri SUCCESS olduğunda, anlık görüntü tamamlanmış demektir.

Adım 4: Alibaba Cloud Elasticsearch'te bir depo oluşturun

Alibaba Cloud Elasticsearch kümenizde, Kibana konsoluna giriş yapın. Sol gezinme bölmesinde 展开图标 simgesine tıklayın ve Management > Developer Tools seçeneğini belirleyin.

Shell alanında, kendi yönettiğiniz küme için oluşturduğunuz depoyla aynı ayarlara sahip bir depo oluşturun:

PUT _snapshot/<yourBackupName>/
{
    "type": "oss",
    "settings": {
        "endpoint": "oss-cn-shanghai.aliyuncs.com",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxxxx",
        "bucket": "<yourBucketName>",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "snapshot/"
    }
}

<yourBackupName>, <yourBucketName> ve <base_path> değerleri, kendi yönettiğiniz Elasticsearch kümesindeki anlık görüntü deposu için kullanılan değerlerle eşleşmelidir.

Adım 5: Anlık görüntüyü Alibaba Cloud Elasticsearch'te geri yükleyin

Kibana konsolunda, snapshot_1 anlık görüntüsünü kümeye geri yükleyin. Bu işlem, izleme ve güvenlik denetim dizinleri hariç tüm dizinleri geri yükler ve kullanılamayan dizinleri atlar.

POST _snapshot/<yourBackupName>/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}

Başarılı bir istek {"accepted": true} yanıtını döndürür.

Geri yükleme ilerlemesini kontrol etmek için GET products_info/_recovery komutunu çalıştırın. stage değeri DONE olduğunda, dizin geri yüklenmiş demektir.

Not

Elasticsearch 7.10.x ve 7.17.x sürümlerinde, daha yüksek bir revizyon numarasına sahip anlık görüntülerin geri yüklenmesine izin vermek için cluster.restore.ignore_revision.enable parametresini true olarak ayarlayın. Revizyon numarası, sürümün üçüncü bölümüdür (örneğin, 7.10.1 sürümündeki 1).

Örnek: 7.10.0 kümesinde cluster.restore.ignore_revision.enable parametresini true olarak ayarladıktan sonra, 7.10.2 sürümünden anlık görüntüleri geri yükleyebilirsiniz:

PUT _cluster/settings
{
  "persistent": {
    "cluster.restore.ignore_revision.enable": true
  }
}

Adım 6: Sonuçları doğrulayın

Kibana konsolunda, verilerin geri yüklendiğini doğrulamak için aşağıdaki komutları çalıştırın:

  • Geri yüklenen dizinleri görüntüleyin:

    GET /_cat/indices?v
  • Geri yüklenen dizindeki verileri görüntüleyin:

    GET /products_info/_search

    Beklenen sonuç:

    {
      "took": 3,
      "timed_out": false,
      "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 6,
          "relation": "eq"
        },
        "max_score": 1,
        "hits": [
          {
            "_index": "products_info",
            "_id": "1",
            "_score": 1,
            "_source": {
              "productName": "Financial Product A",
              "annual_rate": "3.2200%",
              "describe": "180-day fixed-term investment, 20,000 minimum, stable returns, optional message notifications."
            }
          },
          {
            "_index": "products_info",
            "_id": "2",
            "_score": 1,
            "_source": {
              "productName": "Financial Product B",
              "annual_rate": "3.1100%",
              "describe": "90-day investment product, 10,000 minimum, daily return notifications."
            }
          },
          {
            "_index": "products_info",
            "_id": "3",
            "_score": 1,
            "_source": {
              "productName": "Financial Product C",
              "annual_rate": "3.3500%",
              "describe": "270-day investment product, 40,000 minimum, instant daily return notifications."
            }
          },
          {
            "_index": "products_info",
            "_id": "4",
            "_score": 1,
            "_source": {
              "productName": "Financial Product D",
              "annual_rate": "3.1200%",
              "describe": "90-day investment product, 12,000 minimum, daily return notifications."
            }
          },
          {
            "_index": "products_info",
            "_id": "5",
            "_score": 1,
            "_source": {
              "productName": "Financial Product E",
              "annual_rate": "3.0100%",
              "describe": "Recommended 30-day investment product, 8,000 minimum, daily return notifications."
            }
          },
          {
            "_index": "products_info",
            "_id": "6",
            "_score": 1,
            "_source": {
              "productName": "Financial Product F",
              "annual_rate": "2.7500%",
              "describe": "Popular short-term product, 3-day term, no fees, 500 minimum, get return notifications via SMS."
            }
          }
        ]
      }
    }

SSS

elasticsearch-repository-oss eklentisinin diğer sürümleri

Eklentiyi GitHub adresinden indirin. Tam sürümünüz mevcut değilse, aynı ana sürüm içinde benzer bir alt sürüm indirin, plugin-descriptor.properties dosyasındaki değerleri güncelleyin, eklentiyi yeniden paketleyin ve yükleyin.

  • version=Gerekli eklenti sürümü

  • elasticsearch.version=Kendi yönettiğiniz Elasticsearch kümesinin sürümü

    Not

    Eklenti sürümü, kendi yönettiğiniz Elasticsearch kümesinin sürümüyle eşleşmelidir.

  • java.version=1.8

    Not
    • Farklı Elasticsearch sürümleri farklı JDK sürümleri gerektirir. Daha fazla bilgi için resmi Elasticsearch ve eklenti gereksinimlerine bakın.

    • Farklı açık kaynaklı Elasticsearch sürümlerinin farklı derleme yöntemleri vardır. elasticsearch-repository-oss eklentisini sürümünüzle eşleşecek şekilde derlemeniz gerekir. Örneğin, kendi yönettiğiniz 7.6.2 kümesi JDK 1.8 veya üstünü gerektirir. İlgili eklenti elasticsearch-repository-oss-7.6.2 şeklindedir.