Rumah pembangunan bahagian belakang tutorial php PHP Elasticsearch dan panduan amalan penyepaduan pangkalan data hubungan

PHP Elasticsearch dan panduan amalan penyepaduan pangkalan data hubungan

Sep 13, 2023 pm 12:49 PM
php elasticsearch pangkalan data hubungan

php Elasticsearch与关系型数据库的集成实践指南

Panduan Praktikal Integrasi PHP Elasticsearch dan Pangkalan Data Hubungan

Pengenalan:

Dengan kemunculan Internet dan era data besar, kaedah penyimpanan dan pemprosesan data juga sentiasa berkembang. Pangkalan data hubungan tradisional secara beransur-ansur menunjukkan beberapa kelemahan apabila berhadapan dengan senario seperti data besar-besaran, bacaan dan penulisan serentak yang tinggi, dan carian teks penuh. Sebagai enjin carian dan analisis teragih masa nyata, Elasticsearch telah menarik perhatian dan penggunaan industri secara beransur-ansur melalui carian teks penuh berprestasi tinggi, analisis masa nyata dan fungsi visualisasi data.

Walau bagaimanapun, dalam banyak senario aplikasi praktikal, kami selalunya perlu menyepadukan pangkalan data hubungan sedia ada dengan Elasticsearch untuk mengambil kira keperluan penyimpanan dan pemprosesan data tradisional, serta fungsi seperti carian teks penuh dan pengesyoran pintar. Artikel ini akan memperkenalkan cara mengintegrasikan Elasticsearch dengan pangkalan data hubungan dalam persekitaran PHP dan memberikan contoh kod khusus.

Bahagian Pertama: Persediaan dan Konfigurasi Persekitaran

  1. Memasang Elasticsearch

Pertama, kita perlu memasang dan mengkonfigurasi pelayan Elasticsearch. Pakej pemasangan yang sepadan boleh dimuat turun dari laman web rasmi (https://www.elastic.co/downloads/elasticsearch). Selepas pemasangan selesai, mulakan perkhidmatan Elasticsearch.

  1. Pasang perpustakaan PHP-Elasticsearch

Interaksi antara PHP dan Elasticsearch boleh dicapai melalui perpustakaan PHP-Elasticsearch yang disediakan secara rasmi. Ia boleh dipasang melalui Komposer. Perintahnya adalah seperti berikut:

composer require elasticsearch/elasticsearch
Salin selepas log masuk

Selepas pemasangan selesai, kami boleh menggunakan API Elasticsearch yang berkaitan dengan mengimport ruang nama yang sepadan.

  1. Penyediaan dan konfigurasi pangkalan data

Kita perlu menyediakan pangkalan data hubungan dan mencipta struktur jadual yang sepadan di dalamnya. Mengambil MySQL sebagai contoh, anda boleh mencipta jadual bernama "pengguna" melalui pernyataan SQL berikut:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  age INT,
  email VARCHAR(50)
);
Salin selepas log masuk

Seterusnya, kita perlu mengkonfigurasi pangkalan data hubungan. Anda perlu mengedit fail config.php untuk mengkonfigurasi maklumat berkaitan sambungan pangkalan data, seperti yang ditunjukkan di bawah: config.php文件,配置数据库连接相关信息,如下所示:

<?php
  $hostname = 'localhost';
  $username = 'your_username';
  $password = 'your_password';
  $database = 'your_database';
?>
Salin selepas log masuk

第二部分:数据同步与索引建立

  1. 数据同步

在将数据库中的数据同步到Elasticsearch之前,我们需要编写一个PHP脚本来实现这一功能。以下是一个简单的示例:

<?php
  require 'vendor/autoload.php';
  require 'config.php';

  // 建立数据库连接
  $connection = new mysqli($hostname, $username, $password, $database);
  if ($connection->connect_error) {
    die("连接数据库失败:" . $connection->connect_error);
  }

  // 查询数据库数据
  $result = $connection->query("SELECT * FROM users");
  if (!$result) {
    die("查询数据失败:" . $connection->error);
  }

  // 将数据同步到Elasticsearch
  $client = ElasticsearchClientBuilder::create()->build();
  foreach ($result as $row) {
    $params = [
      'index' => 'users',
      'type' => 'user',
      'id' => $row['id'],
      'body' => [
        'name' => $row['name'],
        'age' => $row['age'],
        'email' => $row['email']
      ]
    ];
    $client->index($params);
  }

  echo "数据同步完成。";
?>
Salin selepas log masuk

运行脚本之后,数据库中的数据将会同步到Elasticsearch的users索引中。

  1. 索引建立

索引是Elasticsearch中数据的组织方式,类似于关系型数据库中的表。我们需要在Elasticsearch中配置索引,并定义相应的字段映射。

以下是一个创建索引的示例代码:

<?php
  $params = [
    'index' => 'users',
    'body' => [
      'mappings' => [
        'user' => [
          'properties' => [
            'name' => [
              'type' => 'text'
            ],
            'age' => [
              'type' => 'integer'
            ],
            'email' => [
              'type' => 'keyword'
            ]
          ]
        ]
      ]
    ]
  ];

  $client->indices()->create($params);
?>
Salin selepas log masuk

在以上示例中,我们定义了一个名为users的索引,包含了nameageemail三个字段,并使用了相应的字段映射。

第三部分:数据搜索与展示

  1. 数据搜索

在进行数据搜索之前,我们需要对Elasticsearch进行配置,并引入相应的依赖库。以下是一个简单的示例:

<?php
  require 'vendor/autoload.php';

  // 连接Elasticsearch
  $client = ElasticsearchClientBuilder::create()->build();

  // 查询用户信息
  $params = [
    'index' => 'users',
    'type' => 'user',
    'body' => [
      'query' => [
        'match' => [
          'name' => 'John'
        ]
      ]
    ]
  ];

  $response = $client->search($params);
  print_r($response);
?>
Salin selepas log masuk

在以上示例中,我们查询了name

<?php
  require 'vendor/autoload.php';

  // 连接Elasticsearch
  $client = ElasticsearchClientBuilder::create()->build();

  // 查询用户信息
  $params = [
    'index' => 'users',
    'type' => 'user',
    'body' => [
      'query' => [
        'match' => [
          'name' => 'John'
        ]
      ]
    ]
  ];

  $response = $client->search($params);
  
  echo "查询到" . $response['hits']['total']['value'] . "条用户信息:" . PHP_EOL;
  
  foreach ($response['hits']['hits'] as $hit) {
    echo "ID:" . $hit['_id'] . ",Name:" . $hit['_source']['name'] . ",Age:" . $hit['_source']['age'] . ",Email:" . $hit['_source']['email'] . PHP_EOL;
  }
?>
Salin selepas log masuk
Bahagian 2: Penyegerakan data dan penubuhan indeks
  1. Penyegerakan data

Dalam pangkalan data data Sebelum menyegerakkan ke Elasticsearch, kita perlu menulis skrip PHP untuk melaksanakan fungsi ini. Berikut ialah contoh mudah:

rrreee

Selepas menjalankan skrip, data dalam pangkalan data akan disegerakkan ke indeks pengguna Elasticsearch.

Pembinaan indeks

🎜🎜Indeks ialah cara data disusun dalam Elasticsearch, serupa dengan jadual dalam pangkalan data hubungan. Kita perlu mengkonfigurasi indeks dalam Elasticsearch dan menentukan pemetaan medan yang sepadan. 🎜🎜Berikut ialah contoh kod untuk mencipta indeks: 🎜rrreee🎜Dalam contoh di atas, kami mentakrifkan indeks bernama pengguna, termasuk nama, Terdapat tiga medan: umur dan e-mel, dan pemetaan medan yang sepadan digunakan. 🎜🎜Bahagian 3: Carian dan Paparan Data🎜🎜🎜Carian Data🎜🎜🎜Sebelum menjalankan carian data, kami perlu mengkonfigurasi Elasticsearch dan memperkenalkan perpustakaan kebergantungan yang sepadan. Berikut ialah contoh mudah: 🎜rrreee🎜Dalam contoh di atas, kami menanyakan maklumat pengguna yang mengandungi "John" dalam medan name. 🎜🎜🎜Paparan data🎜🎜🎜Setelah mendapat hasil carian, kami boleh memaparkan dan memproses keputusan mengikut keperluan. Berikut ialah contoh kod paparan mudah: 🎜rrreee🎜Contoh di atas akan memaparkan maklumat pengguna yang dicari. 🎜🎜Kesimpulan: 🎜🎜Artikel ini memperkenalkan cara mengintegrasikan Elasticsearch dengan pangkalan data hubungan dalam persekitaran PHP, dan menyediakan contoh kod khusus. Kami berharap pembaca boleh berjaya mencapai penyepaduan lancar kedua-duanya melalui panduan artikel ini, dengan itu menggunakan sepenuhnya fungsi berkuasa dan kelebihan prestasi Elasticsearch dan meningkatkan kecekapan dan kualiti penyimpanan dan pemprosesan data. 🎜

Atas ialah kandungan terperinci PHP Elasticsearch dan panduan amalan penyepaduan pangkalan data hubungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Pembalakan CakePHP Pembalakan CakePHP Sep 10, 2024 pm 05:26 PM

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

See all articles