ホームページ  >  記事  >  バックエンド開発  >  PHP Elasticsearch とリレーショナル データベースの統合実践ガイド

PHP Elasticsearch とリレーショナル データベースの統合実践ガイド

WBOY
WBOYオリジナル
2023-09-13 12:49:47738ブラウズ

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

PHP Elasticsearch とリレーショナル データベースの統合のための実践ガイド

はじめに:

インターネットとビッグ データ時代の到来により、データ ストレージは処理方法も常に進化しています。従来のリレーショナル データベースは、大量のデータ、同時読み取りと書き込み、全文検索などのシナリオに直面すると、徐々にいくつかの欠点が明らかになってきました。 Elasticsearch は、リアルタイムの分散検索および分析エンジンとして、その高性能の全文検索、リアルタイム分析、データ視覚化機能により、徐々に業界の注目と利用を集めています。

ただし、実際のアプリケーション シナリオの多くでは、従来のデータ ストレージと処理要件に加え、全文検索やインテリジェントなレコメンデーションなどの機能を考慮するために、既存のリレーショナル データベースを Elasticsearch と統合する必要があることがよくあります。この記事では、PHP 環境で Elasticsearch をリレーショナル データベースと統合する方法を紹介し、具体的なコード例を示します。

パート 1: 環境の準備と構成

  1. Elasticsearch のインストール

まず、Elasticsearch サーバーをインストールして構成する必要があります。対応するインストール パッケージは、公式 Web サイト (https://www.elastic.co/downloads/elasticsearch) からダウンロードできます。インストールが完了したら、Elasticsearch サービスを開始します。

  1. PHP-Elasticsearch ライブラリのインストール

PHP と Elasticsearch 間の対話は、公式に提供されている PHP-Elasticsearch ライブラリを通じて実現できます。 Composer を通じてインストールできます。コマンドは次のとおりです:

composer require elasticsearch/elasticsearch

インストールが完了したら、対応する名前空間をインポートすることで、Elasticsearch の関連 API を使用できるようになります。

  1. データベースの準備と構成

リレーショナル データベースを準備し、その中に対応するテーブル構造を作成する必要があります。 MySQL を例に挙げると、次の SQL ステートメントを使用して「users」という名前のテーブルを作成できます。

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

次に、リレーショナル データベースを構成する必要があります。以下に示すように、config.php ファイルを編集して、データベース接続関連の情報を構成する必要があります。

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

パート 2: データの同期とインデックスの作成

  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 "数据同步完成。";
?>

スクリプトを実行すると、データベース内のデータが 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);
?>

上の例では、users という名前のインデックスを定義します。これには name# が含まれます。 3 つのフィールド: ##、ageemail であり、対応するフィールド マッピングが使用されます。

パート 3: データの検索と表示

    データ検索
データ検索を実行する前に、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);
?>

上の例では、

name フィールドに「John」を含むユーザー情報をクエリします。

    データ表示
検索結果を取得した後、必要に応じて結果を表示および処理できます。以下に簡単な表示コード例を示します。

<?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;
  }
?>

上記の例では、検索されたユーザー情報が表示されます。

結論:

この記事では、PHP 環境で Elasticsearch をリレーショナル データベースと統合する方法を紹介し、具体的なコード例を示します。読者の皆様がこの記事のガイダンスを通じて 2 つのシームレスな統合を成功裏に実現し、それによって Elasticsearch の強力な機能とパフォーマンスの利点を最大限に活用し、データの保存と処理の効率と品質を向上できることを願っています。

以上がPHP Elasticsearch とリレーショナル データベースの統合実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。