全部产品
Search
文档中心

Elasticsearch:Migrasi dokumen dari kluster Solr ke kluster Elasticsearch Alibaba Cloud

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan alat solr-to-es untuk memigrasikan dokumen dari kluster Solr ke kluster Elasticsearch Alibaba Cloud. Alat ini disediakan oleh komunitas pihak ketiga.

Siapkan lingkungan

  1. Buat kluster Elasticsearch V6.X Alibaba Cloud. Dalam contoh ini, kluster Elasticsearch V6.3.2 digunakan. Untuk informasi lebih lanjut, lihat Buat Kluster Elasticsearch Alibaba Cloud.
    Penting Alat solr-to-es yang digunakan dalam contoh ini hanya mendukung kluster Elasticsearch V6.X. Jika Anda ingin menggunakan kluster Elasticsearch versi lain, lakukan uji kompatibilitas terlebih dahulu.
  2. Aktifkan fitur Pengindeksan Otomatis untuk kluster Elasticsearch. Untuk informasi lebih lanjut, lihat Konfigurasikan File YML.
  3. Buat instance Elastic Compute Service (ECS) Alibaba Cloud. Untuk informasi lebih lanjut, lihat Langkah 1: Buat Instance ECS. Dalam contoh ini, instance ECS yang menjalankan CentOS 7.3 digunakan.
    Penting Instance ECS harus berada di wilayah, zona, dan virtual private cloud (VPC) yang sama dengan kluster Elasticsearch.
  4. Instal Solr pada instance ECS. Dalam contoh ini, Solr 5.0.0 digunakan. Untuk informasi lebih lanjut, lihat Dokumentasi Resmi Solr.
  5. Instal Python pada instance ECS. Versinya harus 3.0 atau lebih baru. Dalam contoh ini, Python 3.6.2 digunakan.
  6. Instal pysolr pada instance ECS. Versinya harus 3.3.3 atau lebih baru tetapi lebih awal dari 4.0.

Instal solr-to-es

  1. Hubungkan ke instance ECS dan unduh solr-to-es.
    Untuk informasi lebih lanjut tentang cara menghubungkan ke instance ECS, lihat Gunakan Workbench untuk Terhubung ke Instance Linux melalui SSH.
    Catatan Dalam contoh ini, pengguna umum digunakan.
  2. Navigasikan ke direktori tempat setup.py disimpan dan jalankan perintah sudo python setup.py install untuk menginstal solr-to-es.
  3. Setelah solr-to-es diinstal, jalankan perintah berikut untuk memigrasikan dokumen:
    sudo python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>

    Tabel 1. Parameter

    ParameterDeskripsi
    <solr_url>Titik akhir kluster Solr Anda. Contoh: http://116.62.**.**.
    <my_core>Nama Solr Core yang berisi dokumen yang ingin Anda migrasikan.
    <username>Nama pengguna yang digunakan untuk mengakses kluster Elasticsearch Anda. Nama pengguna default adalah elastic.
    <password>Kata sandi yang digunakan untuk mengakses kluster Elasticsearch Anda. Kata sandi ditentukan saat Anda membuat kluster.
    <elasticsearch_url>Titik akhir internal atau publik kluster Elasticsearch Anda. Anda dapat memperoleh titik akhir publik kluster dari halaman Informasi Dasar kluster. Untuk informasi lebih lanjut, lihat Lihat informasi dasar kluster.
    <elasticsearch_index>Nama indeks tempat dokumen akan dimigrasikan.
    <doc_type>Tipe indeks.
    Penting Jika Anda menggunakan solr-to-es versi yang berbeda dari yang dijelaskan dalam topik ini, Anda dapat mencoba perintah berikut untuk memigrasikan dokumen. Untuk informasi lebih lanjut, lihat solr-to-es.
    sudo solr-to-es [-h] [--solr-query SOLR_QUERY] [--solr-fields COMMA_SEP_FIELDS]
                     [--rows-per-page ROWS_PER_PAGE] [--es-timeout ES_TIMEOUT]
                     solr_url elasticsearch_url elasticsearch_index doc_type

    Jika Anda menggunakan perintah di atas dalam lingkungan yang dijelaskan dalam topik ini, kesalahan -bash: solr-to-es.py: command not found akan dikembalikan.

Contoh

Kueri semua dokumen dalam Solr Core my_core dan tulis dokumen-dokumen tersebut ke indeks di kluster Elasticsearch Anda. Nama indeksnya adalah elasticsearch_index, dan tipe indeksnya adalah doc_type.

  1. Di lingkungan Solr, navigasikan ke direktori solr-to-es-master/solr_to_es.
  2. Jalankan perintah berikut:
    sudo python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:Your password@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_type
    ParameterDeskripsi
    qWajib. Parameter ini mendefinisikan kueri yang menggunakan sintaks kueri standar di Solr. Operator didukung. Nilai *%3A* menunjukkan bahwa semua dokumen akan dikueri.
    wtFormat data yang akan dikembalikan. Format yang didukung termasuk JSON, XML, Python, Ruby, dan CSV.
    indentMenentukan apakah akan menggunakan indentasi untuk memastikan data yang dikembalikan lebih mudah dibaca. Nilai default: false.

    Untuk informasi lebih lanjut tentang parameter lainnya, lihat Parameter.

  3. Masuk ke konsol Kibana kluster Elasticsearch Anda dan buka halaman utama konsol Kibana sesuai petunjuk.
    Untuk informasi lebih lanjut, lihat Masuk ke Konsol Kibana.
    Catatan Dalam contoh ini, konsol Kibana kluster Elasticsearch V6.7 digunakan. Operasi untuk versi kluster lainnya mungkin berbeda. Operasi sebenarnya di konsol Kibana yang berlaku.
  4. Di bilah navigasi di sebelah kiri, klik Dev Tools. Pada halaman yang muncul, klik Go to work.
  5. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk memeriksa apakah indeks elasticsearch_index dibuat di kluster Elasticsearch:
    GET _cat/indices?v
  6. Pada tab Console, jalankan perintah berikut untuk melihat detail dokumen yang dimigrasikan:
    GET /elasticsearch_index/doc_type/_search
    Jika perintah berhasil dijalankan, hasil berikut akan dikembalikan:
    {
      "took" : 12,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "elasticsearch_index",
            "_type" : "doc_type",
            "_id" : "Tz8WNW4BwRjcQciJ****",
            "_score" : 1.0,
            "_source" : {
              "id" : "2",
              "title" : [
                "test"
              ],
              "_version_" : 1648195017403006976
            }
          },
          {
            "_index" : "elasticsearch_index",
            "_type" : "doc_type",
            "_id" : "Tj8WNW4BwRjcQciJ****",
            "_score" : 1.0,
            "_source" : {
              "id" : "1",
              "title" : [
                "change.me"
              ],
              "_version_" : 1648195007391203328
            }
          }
        ]
      }
    }