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 サイトの他の関連記事を参照してください。