Apakah Jenis Pemetaan?
Dalam Elasticsearch, setiap dokumen tergolong dalam Indeks dan Jenis. Indeks boleh dianggap sebagai Pangkalan Data sedangkan Jenis dapat dilihat sebagai Jadual jika dibandingkan dengan Pangkalan Data Relasional. Jenis pemetaan adalah partisi logik objek dengan objek lain yang termasuk dalam Jenis Pemetaan lain dalam Indeks yang sama.
Setiap Jenis Pemetaan mempunyai bidangnya sendiri. Contohnya, sejenis pengguna boleh mempunyai bidang berikut:
"id": 123,
"nama": "Shubham",
"laman web": 1
Jenis Pemetaan lain dalam indeks yang sama laman web boleh mempunyai bidang berikut yang sama sekali berbeza dengan pengguna taip:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Semasa mencari dokumen dalam indeks, pencarian mungkin terbatas pada satu dokumen dengan menentukan satu bidang sebagai:
DAPATKAN idx_name / pengguna, laman web / _search"pertanyaan":
"padanan":
"id": 1
The _jenis bidang dokumen digabungkan dengan dokumen tersebut _ID untuk menjana a _uid bidang sehingga dokumen dengan yang sama _ID boleh wujud dalam satu indeks.
Baca Tutorial Elasticsearch untuk Pemula untuk pemahaman yang lebih mendalam mengenai Elasticsearch Architecture dan mulakan dengannya dengan Pasang ElasticSearch di Ubuntu.
Mengapa Jenis Pemetaan dikeluarkan?
Sama seperti apa yang kami katakan di atas sambil menerangkan bagaimana Indeks dan Jenisnya serupa dengan Pangkalan Data dan Jadual dalam Pangkalan Data Relasional, pasukan Elasticsearch berpandangan sama tetapi ini tidak berlaku kerana Lucene Engine tidak mengikuti analogi yang sama. Ini kerana sebab-sebab berikut:
- Dalam Pangkalan Data Relasional, jadual saling bergantung antara satu sama lain dan nama lajur, walaupun mereka sama tidak mempunyai hubungan antara mereka. Ini tidak berlaku dengan bidang dalam jenis pemetaan seperti di ES, medan dengan nama yang sama diperlakukan sebagai medan Lucene Engine yang sama secara dalaman.
- Dalam contoh di atas, ladang _ID dalam pengguna taip dan laman web jenis disimpan dalam bidang yang sama dan harus mempunyai jenis yang sama yang boleh menimbulkan kekecewaan dan kekeliruan.
- Menyimpan entiti tanpa bidang sama menghentikan Lucene untuk memampatkan dokumen dengan berkesan.
Alternatif untuk Jenis Pemetaan
Walaupun keputusan telah dibuat, kami masih perlu memisahkan pelbagai jenis data. Sekarang, alternatif pertama adalah memisahkan dokumen dalam indeks mereka sendiri yang mempunyai dua kelebihan:
- Sekarang bahawa data sudah biasa di setiap indeks, Lucene dapat dengan mudah menerapkan teknik pemampatan datanya sendiri.
- Sekarang semua dokumen dalam indeks mempunyai bidang yang sama, kemampuan pencarian teks penuh meningkat secara fenomenal kerana pemarkahan setiap dokumen telah meningkat.
Alternatif lain untuk memisahkan data adalah mengekalkan kebiasaan _jenis bidang dalam setiap dokumen yang kami masukkan, seperti:
TETAP db_name / doc / 123"type": "pengguna",
"id": 123,
"nama": "Shubham",
"laman web": 1
TETAP db_name / doc / laman web
"type": "laman web",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Ini adalah penggunaan yang sangat baik jika anda mencari penyelesaian khusus yang lengkap.
Menjadualkan penghapusan Jenis Pemetaan
Oleh kerana membuang Jenis Pemetaan adalah perubahan besar, pasukan ES melakukan prosesnya dengan perlahan. Berikut adalah jadual penggulungan yang diekstrak daripada elastik.rakan:
- Pencarian Elastik 7.x
- The menaip parameter dalam URL adalah pilihan. Sebagai contoh, pengindeksan dokumen tidak lagi memerlukan jenis dokumen.
- The _ lalai_ jenis pemetaan dikeluarkan.
- Pencarian Elastik 8.x
- The menaip parameter tidak lagi disokong dalam URL.
- The sertakan_tipe_nama parameter lalai ke salah.
- Pencarian Elastik 9.x
- The sertakan_tipe_nama parameter dikeluarkan.
Kesimpulannya
Dalam pelajaran ini, kami melihat mengapa jenis Elasticsearch Mapping dikeluarkan dan tidak akan disokong sepenuhnya dalam versi yang akan datang.