Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengoptimumkan Struktur Indeks ElasticSearch untuk Perhubungan Pelbagai Entiti daripada Pangkalan Data Warisan?

Bagaimana untuk Mengoptimumkan Struktur Indeks ElasticSearch untuk Perhubungan Pelbagai Entiti daripada Pangkalan Data Warisan?

Patricia Arquette
Patricia Arquetteasal
2024-12-01 13:56:11303semak imbas

How to Optimize ElasticSearch Index Structure for Multi-Entity Relationships from a Legacy Database?

Mengkonfigurasi Struktur Indeks ElasticSearch dengan Pengikatan Berbilang Entiti

Apabila menyepadukan ElasticSearch (ES) dengan pangkalan data warisan, adalah penting untuk mengoptimumkan struktur indeks untuk pertanyaan yang cekap. Dalam kes ini, tugasnya adalah untuk mereplikasi pangkalan data dengan struktur yang kompleks dan tidak optimum ke dalam ES.

Garisan Masalah

Pangkalan data terdiri daripada tiga jadual:

  • Produk: Mengandungi data produk (id, tajuk, harga)
  • Bendera: Mengandungi definisi bendera (jual beli, diskaun, produk teratas)
  • BenderaProduk: Jadual pangsi yang menghubungkan Produk dan Bendera

Matlamatnya adalah untuk meratakan ini struktur untuk pertanyaan yang lebih mudah dalam ES, sambil mengekalkan pelbagai nilai perhubungan.

Penyelesaian: Meratakan Struktur

Untuk menghapuskan hubungan n:m antara produk dan bendera, kami mengesyorkan membuat dokumen produk rata yang mengandungi " flags" tatasusunan yang mengandungi semua bendera yang berkaitan untuk setiap produk. Pendekatan ini memudahkan pertanyaan untuk bendera dan menyediakan struktur data yang lebih koheren.

Berikut ialah contoh dokumen produk yang diratakan:

{
   "id": "00c8234d71c4e94f725cd432ebc04",
   "title": "Alpha",
   "price": 589.0,
   "flags": ["Sellout", "Top Product"]
}

{
   "id": "018357657529fef056cf396626812",
   "title": "Beta",
   "price": 355.0,
   "flags": ["Discount"]
}

{
   "id": "01a2c32ceeff0fc6b7dd4fc4302ab",
   "title": "Gamma",
   "price": 0.0,
   "flags": ["Discount"]
}

ES Pemetaan

Pemetaan yang sepadan untuk jenis indeks "produk" akan be:

PUT products
{
    "mappings": {
        "product": {
            "properties": {
                "id": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "title": {
                    "type": "string"
                },
                "price": {
                    "type": "double",
                    "null_value": 0.0
                },
                "flags": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        }
    }
}

SQL Query for Logstash Input

Untuk mengambil data yang diperlukan daripada pangkalan data, kami mencadangkan pertanyaan SQL berikut:

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Struktur Indeks ElasticSearch untuk Perhubungan Pelbagai Entiti daripada Pangkalan Data Warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn