ホームページ  >  記事  >  バックエンド開発  >  PHPとElasticsearchを使用してリアルタイム検索機能を構築する方法

PHPとElasticsearchを使用してリアルタイム検索機能を構築する方法

WBOY
WBOYオリジナル
2023-07-18 11:30:20929ブラウズ

PHP と Elasticsearch を使用してリアルタイム検索機能を構築する方法

Elasticsearch は、大量のデータを迅速かつ効率的に取得して分析するために使用できるオープンソースの分散検索エンジンです。 PHP は、Web 開発でよく使用される人気のスクリプト言語です。この記事では、PHP と Elasticsearch を使用してリアルタイム検索機能を構築する方法を紹介します。

ステップ 1: Elasticsearch のインストールと構成

まず、Elasticsearch サーバーをインストールする必要があります。公式 Web サイトから対応するオペレーティング システムのインストール パッケージをダウンロードし、公式ドキュメントに従ってインストールできます。インストールが完了したら、Elasticsearch 構成ファイル elasticsearch.yml を変更する必要があります。例:

cluster.name: my-cluster

cluster.name をカスタマイズされたクラスター名に変更します。

ステップ 2: インデックスとマッピングを作成する

Elasticsearch では、データは 1 つ以上のインデックスに編成されます。各インデックスには複数のタイプが含まれており、各タイプには複数のドキュメントが含まれています。まず、インデックスを作成し、そのマッピングを定義する必要があります。

Elasticsearch の RESTful API を使用してインデックスとマッピングを作成できます。サーバー上の指定されたエンドポイントに PUT リクエストを送信して、インデックスを作成します。

たとえば、「products」という名前のインデックスを作成すると仮定すると、次のコードを使用できます:

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

このコードは、curl ライブラリを使用して、PUT リクエストを Elasticsearch サーバーに送信します。 、インデックス URL を指定します。 CURLOPT_PUT オプションを true に設定すると、curl ライブラリに PUT リクエストを送信するように指示されます。最後に、curl_exec 関数を実行してリクエストを送信します。

インデックスを作成する方法と同様に、PUT リクエストを使用してインデックス マッピングを作成することもできます。

ステップ 3: ドキュメントのインデックス作成

インデックスを作成し、マッピングを定義した後、ドキュメントのインデックスを作成できます。ドキュメントは Elasticsearch の基本単位であり、一連のフィールドを含む JSON オブジェクトです。

たとえば、「product1」という名前のドキュメントにインデックスを付けたい場合は、次のコードを使用できます:

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/product/1';

$data = '{
  "title": "Product 1",
  "description": "This is product 1"
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

このコードは、curl ライブラリを使用して、PUT リクエストを Elasticsearch サーバーに送信します。 、ドキュメントの URL を指定します。ドキュメントの URL は、インデックス名、タイプ、ドキュメント ID で構成されます。データ部分は、タイトルと説明のフィールドを含む JSON 文字列です。

ドキュメントのインデックス作成方法と同様に、PUT リクエストを使用してドキュメントを更新することもできます。

ステップ 4: ドキュメントの検索

ドキュメントのインデックスが作成されたら、Elasticsearch の検索機能を使用してドキュメントを取得できます。

たとえば、タイトル フィールドにキーワード「product」が含まれるドキュメントを検索する場合は、次のコードを使用できます。

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/_search';

$data = '{
  "query": {
    "match": {
      "title": "product"
    }
  }
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

このコードは、curl ライブラリを使用して POST を送信します。検索 URL を指定して、Elasticsearch サーバーにリクエストを送信します。検索される URL はインデックス名と _search で構成されます。データ部分はクエリ条件を含む JSON 文字列です。

ステップ 5: 検索結果を処理する

必要に応じて、返された検索結果をさらに処理できます。検索結果は JSON 形式で返され、必要に応じて解析して表示できます。

たとえば、次のコードを使用して JSON 結果を解析し、検索結果を表示できます。

<?php

$response = json_decode($response, true);

$hits = $response['hits']['hits'];

foreach ($hits as $hit) {
  $source = $hit['_source'];
  $title = $source['title'];
  $description = $source['description'];

  echo "Title: $title
";
  echo "Description: $description
";
  echo "
";
}
?>

このコードは、まず検索結果を連想配列に変換し、次にタイトルと各ドキュメントフィールドの説明を作成し、それらを表示します。

上記の手順により、PHP と Elasticsearch を使用してリアルタイム検索機能を構築できます。 Elasticsearch サーバーを構成し、インデックスとマッピングを作成し、ドキュメントのインデックスを作成し、ドキュメントを検索することで、強力なリアルタイム検索エンジンを構築できます。

以上がPHPとElasticsearchを使用してリアルタイム検索機能を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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