Gunakan alat open-source solr-to-es untuk memigrasikan dokumen dari Solr Core ke indeks Alibaba Cloud Elasticsearch.
solr-to-es hanya mendukung kluster Elasticsearch V6.X. Jika kluster target Anda menjalankan versi berbeda, lakukan uji kompatibilitas terlebih dahulu sebelum melanjutkan.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster Alibaba Cloud Elasticsearch V6.X dengan fitur Auto Indexing diaktifkan. Contoh ini menggunakan V6.3.2. Untuk petunjuk penyiapan, lihat Buat kluster Alibaba Cloud Elasticsearch dan Konfigurasi file YML.
-
Instans Elastic Compute Service (ECS) yang berjalan di wilayah, zona, dan virtual private cloud (VPC) yang sama dengan kluster Elasticsearch. Contoh ini menggunakan CentOS 7.3. Untuk petunjuk penyiapan, lihat Langkah 1: Buat instans ECS.
-
Solr yang telah diinstal pada instans ECS. Contoh ini menggunakan Solr 5.0.0. Untuk informasi lebih lanjut, lihat dokumentasi resmi Solr.
-
Python 3.0 atau versi yang lebih baru yang telah diinstal pada instans ECS. Contoh ini menggunakan Python 3.6.2.
-
pysolr 3.3.3 atau versi yang lebih baru (namun sebelum 4.0) yang telah diinstal pada instans ECS.
Instal solr-to-es
-
Hubungkan ke instans ECS. Untuk petunjuknya, lihat Hubungkan ke instans Linux menggunakan password atau kunci.
Contoh ini menggunakan akun pengguna biasa.
-
Unduh solr-to-es dan masuk ke direktori tempat file
setup.pydisimpan. -
Instal solr-to-es:
sudo python setup.py install
Migrasi dokumen
Semua perintah migrasi mengikuti struktur yang sama: berikan URL kueri Solr, titik akhir Elasticsearch beserta kredensialnya, nama indeks tujuan, dan tipe indeks.
Jalankan perintah berikut untuk memigrasikan dokumen dari Solr Core ke indeks Elasticsearch:
sudo python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>
Ganti placeholder dengan nilai aktual Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<solr_url> |
Titik akhir kluster Solr Anda | http://116.62.. |
<my_core> |
Nama Solr Core yang berisi dokumen yang akan dimigrasikan | my_core |
<username> |
Username untuk kluster Elasticsearch Anda. Nilai default-nya adalah elastic. |
elastic |
<password> |
Password yang ditetapkan saat kluster dibuat | — |
<elasticsearch_url> |
Titik akhir internal atau publik kluster Elasticsearch Anda. Temukan informasi ini di halaman Basic Information kluster Anda. Lihat Lihat informasi dasar kluster. | es-cn-****.elasticsearch.aliyuncs.com |
<elasticsearch_index> |
Nama indeks tujuan | elasticsearch_index |
<doc_type> |
Tipe indeks | doc_type |
Jika Anda menggunakan versi solr-to-es yang berbeda, coba gunakan sintaks perintah alternatif berikut. Untuk detailnya, lihat dokumentasi solr-to-es.Menjalankan perintah ini di lingkungan yang dijelaskan dalam topik ini menghasilkan error berikut: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-bash: solr-to-es.py: command not found
Contoh
Contoh ini melakukan kueri terhadap semua dokumen di Solr Core my_core dan menuliskannya ke indeks elasticsearch_index di kluster Elasticsearch Anda.
-
Pada instans ECS, masuk ke direktori
solr-to-es-master/solr_to_es. -
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_typeURL kueri Solr dalam perintah ini menggunakan parameter berikut:
Parameter Deskripsi qWajib diisi. Ekspresi kueri menggunakan sintaks kueri standar Solr. *%3A*mencocokkan semua dokumen.wtFormat respons. Nilai yang didukung: json,xml,python,ruby,csv.indentApakah respons perlu di-indentasi agar lebih mudah dibaca. Default: false.Untuk parameter lainnya, lihat bagian Migrasi dokumen.
-
Masuk ke Konsol Kibana kluster Elasticsearch Anda. Untuk petunjuknya, lihat Masuk ke Konsol Kibana.
Contoh ini menggunakan Konsol Kibana dari kluster Elasticsearch V6.7. Langkah-langkahnya mungkin berbeda untuk versi lain.
-
Di panel navigasi sebelah kiri, klik Dev Tools, lalu klik Go to work.
-
Di tab Console, jalankan perintah berikut untuk memastikan bahwa indeks
elasticsearch_indextelah dibuat:GET _cat/indices?v -
Jalankan perintah berikut untuk melihat dokumen yang telah dimigrasikan:
GET /elasticsearch_index/doc_type/_searchJika berhasil, responsnya akan tampak seperti berikut:
{ "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 } } ] } }
Langkah selanjutnya
Setelah memastikan bahwa dokumen telah berhasil dimigrasikan:
-
Perbarui pengaturan koneksi aplikasi Anda agar mengarah ke titik akhir Elasticsearch.
-
Validasi bahwa kueri pencarian mengembalikan hasil yang diharapkan.
-
Jika Auto Indexing tidak lagi diperlukan, nonaktifkan fitur tersebut untuk menghindari pembuatan indeks yang tidak disengaja. Untuk petunjuknya, lihat Konfigurasi file YML.