全部产品
Search
文档中心

ApsaraDB for HBase:Kelola indeks teks penuh HBase

更新时间:Jun 29, 2025

Persiapan

Baca topik Memulai Cepat, unduh versi terbaru HBase Shell, lalu konfigurasikan HBase Shell.

Buat pemetaan antara tabel HBase dan indeks Pencarian

Anda dapat menggunakan file JavaScript Object Notation (JSON) untuk membuat pemetaan antara tabel HBase dan indeks Pencarian. Contoh berikut menunjukkan contoh konfigurasi.

{
  "sourceNamespace": "default",
  "sourceTable": "testTable",
  "targetIndexName": "democollection",
  "indexType": "SOLR",
  "rowkeyFormatterType": "STRING",
  "fields": [
    {
      "source": "f:name",
      "targetField": "name_s",
      "type": "STRING"
    },
     {
      "source": "f:age",
      "targetField": "age_i",
      "type": "INT"
    }
  ]
}

Dalam contoh sebelumnya, data dalam tabel testTable disinkronkan ke indeks democollection. Kolom f:name, di mana keluarga kolom dan nama kolom dipisahkan dengan titik dua (:), dipetakan ke kolom name_s dalam indeks. Kolom f:age dipetakan ke kolom age_i dalam indeks. Tabel berikut menjelaskan parameter dan nilai validnya.

Parameter

Deskripsi

sourceNamespace

Namespace tabel HBase. Jika tidak ada namespace yang tersedia untuk tabel, biarkan parameter ini kosong atau atur nilainya ke default.

sourceTable

Nama tabel HBase tanpa namespace.

targetIndexName

Nama indeks Pencarian.

indexType

Nilainya diatur ke SOLR.

rowkeyFormatterType

Format rowkey dalam tabel HBase. Anda dapat mengatur parameter ini ke STRING atau HEX. Untuk informasi lebih lanjut, lihat bagian berikut.

fields

Kolom yang akan dipetakan dan tipe kolom dalam indeks Pencarian. Nilainya adalah array JSON. Pisahkan beberapa bidang dengan koma (,). Untuk informasi lebih lanjut, lihat contoh berikut. Untuk informasi lebih lanjut tentang parameter ini, lihat bagian berikut.

rowkeyFormatterType

rowkeyFormatterType menunjukkan bagaimana rowkey dalam tabel HBase dipetakan ke ID dokumen indeks. ID adalah string. Nilai valid:

  • STRING: Jika tipe data rowkey dalam tabel HBase adalah STRING, seperti row1order0001,12345, gunakan nilai ini. Catatan: Dalam contoh sebelumnya, 12345 adalah string, bukan angka. Dalam hal ini, Anda dapat menggunakan fungsi Bytes.toString(byte[]) untuk mengonversi rowkey menjadi ID dokumen indeks. Setelah Anda menemukan dokumen tujuan dalam indeks Pencarian, Anda dapat menggunakan fungsi Bytes.toBytes(String) untuk mengonversi ID dokumen indeks menjadi byte[], yang digunakan sebagai rowkey untuk meminta data asli dalam tabel HBase.

  • HEX: Jika tipe data rowkey dalam tabel HBase bukan STRING, gunakan nilai ini. Misalnya, jika rowkey adalah nilai numerik seperti 12345 atau kombinasi dari beberapa bidang yang mencakup tipe data non-string, atur parameter ini ke HEX. Dalam hal ini, Anda dapat menggunakan fungsi encodeAsString(byte[]) dari paket org.apache.commons.codec.binary.Hex untuk mengonversi rowkey menjadi ID dokumen indeks. Setelah Anda menemukan dokumen tujuan dalam indeks Pencarian, Anda dapat menggunakan fungsi Hex.decodeHex(String.toCharArray()) untuk mengonversi ID dokumen indeks menjadi byte[], yang digunakan sebagai rowkey untuk meminta data asli dalam tabel HBase.

Note: If the data is not written to the HBase table by using the Bytes.toBytes(String) function, the data type is not considered as STRING. To import the rowkey to HBase, set this parameter to HEX. Otherwise, after you convert the ID of the document in the index back to bytes, the result may be different from the original rowkey.

fields

Tabel berikut menjelaskan parameter untuk pemetaan bidang.

Parameter

Deskripsi

source

Nama kolom yang akan dipetakan dalam tabel HBase. Nama keluarga kolom dan qualifier dipisahkan dengan titik dua (:). Sebagai contoh, f:name.

targetField

Nama kolom dalam indeks. Dalam contoh sebelumnya, kolom yang diberikan adalah kolom dinamis, seperti name_s dan age_i. Jika Anda menggunakan kolom dinamis, Anda tidak perlu mendefinisikan nama kolom terlebih dahulu. Layanan Pencarian secara otomatis mengidentifikasi kolom dinamis. Untuk informasi lebih lanjut tentang kolom dinamis, lihat Perbarui set konfigurasi.

type

Tipe data kolom saat data ditulis ke tabel HBase. Tipe data ini harus sama dengan tipe data kolom sumber dalam tabel HBase. Nilai validnya adalah INT, LONG, STRING, BOOLEAN, FLOAT, DOUBLE, SHORT, dan BIGDECIMAL. Nilai-nilai tersebut bersifat case-sensitive.

Pelajari tentang tipe data

HBase tidak menggunakan konsep data type. Sebagai gantinya, tipe data dikonversi menjadi byte. Anda dapat memanggil metode Bytes.toBytes(String/long/int/...) untuk mengonversi semua jenis data menjadi byte, seperti STRING, LONG, dan INT. Dengan cara ini, Anda dapat menyimpan data dalam kolom di tabel HBase. Parameter type menentukan bagaimana data disimpan dalam kolom di tabel HBase. Contoh:

int age = 25;
byte[] ageValue = Bytes.toBytes(age);
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes("age"), ageValue);
String name = "25";
byte[] nameValue = Bytes.toBytes(name);
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes("name"), nameValue);

Dalam kode sebelumnya, kolom f:age bertipe INT, sedangkan kolom f:name bertipe STRING bukan tipe INT. Anda harus mengatur parameter type ke nilai valid untuk menyinkronkan data ke indeks Pencarian. Sistem mengonversi byte kembali ke data aslinya berdasarkan tipe yang ditentukan untuk menyinkronkan data ke indeks Pencarian. Dalam contoh sebelumnya, jika Anda mengatur tipe kolom f:name ke INT, sistem memanggil metode Bytes.toInt() untuk mengonversi byte kembali ke data aslinya. Ini menyebabkan data dikonversi ke tipe yang salah.

Pelajari tentang targetField

Parameter targetField menentukan kolom tujuan dalam indeks Pencarian yang akan dipetakan dari kolom sumber dalam tabel HBase. Layanan Pencarian memiliki skema yang kuat. Oleh karena itu, Anda harus menetapkan set konfigurasi managed_schema untuk setiap kolom. Untuk informasi lebih lanjut tentang cara mengonfigurasi skema, lihat Perbarui Set Konfigurasi. Kami merekomendasikan agar Anda menggunakan metode dynamicField dari layanan Pencarian. Metode ini secara otomatis mengidentifikasi tipe kolom berdasarkan akhiran. Sebagai contoh, name_s menunjukkan bahwa tipe kolom dalam indeks adalah STRING.

Tipe kolom sumber dalam tabel HBase tidak perlu cocok dengan tipe data kolom dalam indeks. Sebagai contoh, Anda dapat mengatur tipe kolom sumber f:age ke STRING dan mengatur parameter targetField ke age_i dalam indeks untuk menentukan bahwa tipe kolom adalah INT. Saat kolom sumber disinkronkan ke indeks, layanan Pencarian secara otomatis mengonversi tipe data dari STRING ke INT. Jika data tipe STRING yang tidak dapat dikonversi ke angka ditulis ke kolom f:age, kesalahan terjadi saat kolom disinkronkan ke indeks.

Kelola skema

Modifikasi skema pemetaan

Anda dapat menyimpan skema format JSON yang dijelaskan dalam bagian sebelumnya dalam file bernama schema.json. Kemudian, Anda dapat menjalankan perintah alter_external_index di HBase Shell untuk memodifikasi skema pemetaan HBase. Anda harus meletakkan file schema.json di direktori startup HBase Shell. Anda juga dapat menentukan jalur relatif atau jalur absolut yang menunjuk ke file tersebut.

hbase(main):006:0> alter_external_index 'Nama tabel HBase', 'schema.json'

Anda dapat menggunakan file JSON untuk menambah, menghapus, atau memodifikasi beberapa kolom. Anda juga dapat menghapus semua kolom pemetaan dalam parameter fields untuk menghapus semua pemetaan tabel HBase. Contoh:

{
  "sourceNamespace": "default",
  "sourceTable": "testTable",
  "targetIndexName": "democollection",
  "indexType": "SOLR",
  "rowkeyFormatterType": "STRING",
  "fields": []
}

Jika Anda ingin menambah satu atau lebih kolom ke skema pemetaan yang ada, Anda dapat menjalankan perintah add_external_index_field.

hbase shell> add_external_index_field 'testTable', {FAMILY => 'f', QUALIFIER => 'money', TARGETFIELD => 'money_f', TYPE => 'FLOAT' }

Note: You can run the add_external_index_field command to add columns only for tables whose schema of the mapping is modified by running the alter_external_index command. Each time you modify the schema of the mapping, the HBase table is completely altered. If you want to modify a large number of columns, we recommend that you run the alter_external_index method to complete the modification.

Jika Anda ingin menghapus satu atau lebih kolom dari skema pemetaan yang ada, jalankan perintah remove_external_index.

hbase shell> remove_external_index 'testTable', 'f:name', 'f:age'

Note: Each time you modify the schema of the mapping, the HBase table is completely altered. If you want to modify a large number of columns, we recommend that you run the alter_external_index method to complete the modification.

Lihat skema saat ini dari pemetaan

Jalankan perintah describe_external_index di HBase Shell untuk mendapatkan skema lengkap pemetaan dalam format JSON untuk tabel saat ini.

hbase(main):005:0> describe_external_index 'testTable'