Web アプリケーションの台頭により、検索エンジンは最新のアプリケーションに不可欠な機能になりました。以前は SQL クエリを使用してデータを検索していましたが、SQL は検索専用に設計されたものではありませんでした。この欠点を補うために、Apache Solr、Elasticsearch などの全文検索エンジンが作成されました。
Elasticsearch は、人気のある Lucene ベースの全文検索エンジンで、リアルタイムのデータ分析と検索エンジンにすぐに使用できる分散検索および分析機能を提供します。従来のリレーショナル データベースと比較して、Elasticsearch はクエリをより高速に実行でき、高度に動的なデータ構造をより適切に処理でき、より豊富なクエリ言語をサポートします。
この記事では、PHP アプリケーションで Elasticsearch を使用する方法を紹介します。
環境の準備
まず、ローカル環境またはリモートサーバーに Elasticsearch をインストールする必要があります。 Elasticsearch は、Windows、macOS、Linux などの一般的なオペレーティング システムをすべてサポートしています。公式 Web サイトからさまざまなバージョンのインストーラーを入手することも、パッケージ マネージャーを使用してインストールすることもできます。
PHP の elasticsearch クライアント ライブラリを使用するには、PHP の elasticsearch クライアント拡張機能もインストールする必要があります。 PECL 経由または手動でダウンロード、コンパイル、インストールできます。以下は PECL の使用例です:
pecl install elasticsearch
次に、php.ini に次の行を追加します:
extension=elasticsearch.so
インストールが完了したら、PHP を使用して Elasticsearch を操作できます。
PHP での Elasticsearch の使用
PHP で Elasticsearch を使用するには、Elasticsearch クライアント クラスまたはライブラリを使用する必要があります。現在、Elasticsearch-PHP、Elasticsearch-DSL、Elastica など、多くの PHP Elasticsearch クライアント ライブラリが利用可能です。
この記事では、Elasticsearch-PHP ライブラリを使用して、Elasticsearch の使用方法を示します。
まず、Elasticsearch クライアント オブジェクトを作成する必要があります:
$client = ElasticsearchClientBuilder::create()->build();
これで、このクライアント オブジェクトを使用して Elasticsearch との接続を確立し、さまざまな操作を実行できます。
ドキュメントのインデックス作成と検索
Elasticsearch では、ドキュメントは JSON 形式のデータを参照します。 PHP Elasticsearch クライアント ライブラリを使用すると、PHP 配列を JSON 形式に簡単に変換し、Elasticsearch にインデックスを付けることができます。まず、インデックス (リレーショナル データベースのテーブルと同様) を選択し、そのインデックスにデータを追加する必要があります。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => '1', 'body' => ['title' => 'My first document', 'content' => 'Hello World'] ]; $response = $client->index($params);
上記のコードでは、index
メソッドを使用してドキュメントにインデックスを付けました。 index
メソッドには、少なくとも次のキーを含むパラメータ配列が必要です:
index
: インデックスの名前 type
: ドキュメントのタイプ id
: ドキュメントの一意の識別子 body
: ドキュメント データを含む配列または JSON 形式の文字列上記のコード例は、#my_index
という名前のインデックスを作成し、タイプ my_type
、ドキュメントの一意識別子 1 を持ち、title を含みます。
および content
フィールド。ドキュメントにインデックスが付けられ、Elasticsearch に保存されると、ドキュメントを検索できるようになります。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'title' => 'My first document' ] ] ] ]; $response = $client->search($params);
上記のコードでは、search
メソッドを使用してドキュメントを検索します。 search
メソッドには、少なくとも次のキーを含む引数配列が必要です:
index
: 検索するインデックスの名前 type
: 検索するドキュメントのタイプ body
: 実際の検索クエリを含む配列 上記のコード例は検索しましたfor my_index
インデックスでは、タイプ my_type
および title
のドキュメントに My first document
が含まれています。検索結果は、クエリに一致するドキュメントを含む JSON 形式の応答です。
ページ分けと並べ替え
検索結果セットが大きい場合、結果をページ分けしたり並べ替えたりする必要がある場合があります。 Elasticsearch によって提供されるパラメーターを使用して、これら 2 つの機能を実現できます。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'title' => 'document' ] ] ], 'size' => 10, 'from' => 0, 'sort' => ['title' => ['order' => 'asc']] ]; $response = $client->search($params);
上記のコードでは、次のパラメータを追加しました:
: ページごとのドキュメントの数
title
フィールド
によって昇順に並べ替えます。 に一致する最初の 10 個のドキュメントを取得し、それらを title
フィールドで昇順に並べ替えます。 集計検索
Elasticsearch は、検索結果セットに対してさまざまな分析を実行する手法である集計検索もサポートしています。たとえば、検索結果から
author フィールドの一意の値をすべて抽出できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>$params = [
'index' => 'my_index',
'type' => 'my_type',
'body' => [
'aggs' => [
'unique_authors' => [
'terms' => [
'field' => 'author.keyword',
'size' => 10
]
]
]
]
];
$response = $client->search($params);</pre><div class="contentsignin">ログイン後にコピー</div></div>上記のコードでは、パラメータ配列の新しいキーとして aggs<p> を使用し、その中に <code>unique_authors
という名前の集計検索を定義します。 terms
は、author
フィールドの値に基づいてグループ化および集計することを意味します。 field
キーは集計するフィールドを指定するために使用され、size
キーは集計されたグループのサイズ制限を指定します。 ######結論は###
Elasticsearch は、多くの最新の Web アプリケーションに不可欠な部分となっている強力な全文検索エンジンであり、データの処理を改善し、リアルタイム検索を実行するのに役立ちます。この記事では、PHP で Elasticsearch を使用する方法と、ドキュメントのインデックス付け、検索、ページ付け、並べ替えの方法について説明します。さらに、Elasticsearchを使用して集計検索を行う方法も紹介します。これで、Elasticsearch を使用して PHP アプリケーションに効率的かつ高速な検索を実装する方法を学習しました。
以上がPHP で Elasticsearch テクノロジーを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。