Indeks posisi mencatat urutan dan posisi token, memungkinkan pencocokan frasa pada tingkat indeks. Setelah diaktifkan, kueri frasa mengembalikan hasil log dan histogram yang akurat tanpa perlu memindai log kandidat.
Fitur indeks posisi saat ini dalam masa pratinjau dan tidak dikenai biaya. Fitur ini hanya tersedia bagi pengguna yang berada dalam daftar izin (allowlist). Untuk menggunakannya, kirimkan tiket untuk mengajukan akses.
Cara kerja
Indeks posisi merupakan sakelar tingkat Logstore yang mewarisi konfigurasi indeks yang ada terkait sensitivitas huruf besar/kecil, segmentasi kata bahasa Tionghoa, dan pembatas (delimiter). Fitur ini tidak memperluas cakupan indeks yang sudah ada. Setelah diaktifkan, sistem akan mencatat posisi token untuk semua indeks teks yang dapat ditokenisasi, termasuk indeks teks penuh, indeks bidang bertipe teks, serta bidang daun (leaf field) yang diindeks sebagai teks dalam indeks bidang bertipe JSON. Bidang yang tidak memiliki indeks teks tidak akan menghasilkan indeks posisi.
Sebagai contoh, jika indeks teks penuh dinonaktifkan dan hanya message yang memiliki indeks bidang bertipe teks, serta bidang daun error di bawah bidang JSON payload memiliki indeks bertipe teks, maka hanya message dan payload.error yang menghasilkan indeks posisi.
Prasyarat
Anda telah mengirimkan tiket untuk menambahkan Logstore target ke dalam allowlist indeks posisi.
Logstore target telah dikonfigurasi dengan indeks teks penuh atau indeks bidang bertipe teks.
Aktifkan indeks posisi
Aktifkan melalui Konsol
Aktifkan melalui Konsol
Masuk ke Konsol Simple Log Service.
Buka halaman kueri dan analisis Logstore target.
Pilih .
Aktifkan sakelar Enable Position Index di bagian bawah halaman, lalu simpan konfigurasi tersebut.
Konfigurasi akan berlaku dalam waktu sekitar satu menit.
Aktifkan melalui SDK
Aktifkan melalui SDK
Contoh berikut menggunakan Python SDK. SDK bahasa lain mengikuti pendekatan serupa.
Instal Python SDK:
pip install -U aliyun-log-python-sdkPembaruan indeks akan menimpa seluruh konfigurasi. Baca terlebih dahulu konfigurasi yang ada, lalu tambahkan bidang tingkat atas "position_index": true:
from aliyun.log import LogClient
class IndexConfigJson(dict):
def to_json(self):
return self
client = LogClient(
"your-endpoint",
"your-access-key-id",
"your-access-key-secret",
)
project = "your-project"
logstore = "your-logstore"
config = client.get_index_config(project, logstore).get_body()
config.pop("lastModifyTime", None)
config["position_index"] = True
client.update_index(project, logstore, IndexConfigJson(config))Gunakan kueri frasa
Kueri frasa menggunakan # sebagai identifikasi dan membungkus frasa dalam tanda kutip ganda.
| Jenis kueri | Sintaks | Contoh |
| Kueri frasa teks penuh | #"frasa" | #"connection reset" |
| Kueri frasa bidang | field:#"frasa" | message:#"connection reset" |
Kueri frasa mencocokkan urutan token yang telah ditokenisasi dan posisi yang berdekatan, bukan pencocokan karakter per karakter. Sebagai contoh, connection reset by peer cocok dengan #"connection reset", tetapi connection was reset by peer tidak cocok.
Perbandingan kemampuan
Indeks posisi tidak mengubah sintaks kueri frasa, tetapi meningkatkan kemampuan kueri:
| Item | Tanpa indeks posisi | Dengan indeks posisi |
| Metode pencocokan | Membaca log kandidat dan memverifikasinya satu per satu | Melakukan pencocokan eksak pada tingkat indeks |
| Paginasi hasil | Hanya mendukung paginasi berurutan | Mendukung paginasi berurutan dan lompat halaman acak |
| Histogram | Berdasarkan hasil kandidat kata kunci | Berdasarkan hasil frasa yang tepat |
| Kombinasi kondisi | Tidak mendukung kondisi NOT atau kueri fuzzy | Mendukung kondisi AND, OR, NOT, dan kueri fuzzy |
| Pernyataan analitik | Tidak didukung | Didukung |
| SPL | Tidak didukung | Didukung |
Contoh berikut menunjukkan kondisi dan analitik yang hanya tersedia jika indeks posisi diaktifkan:
not #"connection reset"
#"connection reset" and host:api-*
#"connection reset" | SELECT level, count(*) GROUP BY level
#"connection reset" | where level = 'ERROR'Catatan penggunaan
Indeks posisi hanya berlaku untuk data baru yang ditulis atau data yang telah dibangun ulang indeksnya. Data historis tidak secara otomatis menghasilkan indeks posisi.
Kueri frasa yang ditingkatkan hanya digunakan jika seluruh data dalam rentang kueri memiliki indeks posisi. Jika terdapat data dalam rentang tersebut yang tidak memiliki indeks posisi, kueri akan kembali menggunakan jalur pemrosesan tanpa indeks posisi.
Mengaktifkan indeks posisi meningkatkan beban pembuatan dan penyimpanan indeks. Peningkatan tersebut terutama bergantung pada frekuensi kemunculan token.
Token berfrekuensi tinggi dan rentang waktu yang lebih panjang meningkatkan volume pembacaan data posisi. Persempit rentang waktu, tambahkan kondisi bidang, atau gunakan frasa yang lebih spesifik.
Jika sebuah Logstore memiliki indeks teks penuh dan indeks bidang bertipe teks dengan konfigurasi tokenisasi yang berbeda, kueri frasa teks penuh
#"frasa"hanya mencocokkan berdasarkan hasil tokenisasi indeks teks penuh. Untuk konten yang hanya dapat dicocokkan melalui indeks bidang, gunakan kueri frasa bidangfield:#"frasa".Saat memperbarui indeks melalui API atau SDK, pertahankan konfigurasi indeks yang ada agar tidak menimpa dan kehilangan pengaturan yang telah ditetapkan sebelumnya.