ホームページ >バックエンド開発 >PHPチュートリアル >Elasticsearch を使用して PHP 開発で検索機能を実装する方法

Elasticsearch を使用して PHP 開発で検索機能を実装する方法

WBOY
WBOYオリジナル
2023-06-27 12:59:201522ブラウズ

インターネットの発展に伴い、検索エンジンの重要性がますます注目されています。検索エンジンは、関連するコンテンツを迅速に検索できるだけでなく、効率的で安定性があり、スケーラブルである必要があります。 Elasticsearch は、人気のある分散型検索エンジンとして、検索分野の多くの企業にとって最初の選択肢となっています。この記事では、PHP開発を利用し、Elasticsearchと組み合わせて検索機能を実装する方法を紹介します。

  1. Elasticsearch のインストール

始める前に、まず Elasticsearch をインストールする必要があります。 Elasticsearch は Java アプリケーションであるため、最初に Java をインストールし、Elasticsearch の圧縮ファイルをダウンロードする必要があります。次に、ファイルを指定したディレクトリに解凍します。

  1. インデックスの作成

インデックスの作成は、Elasticsearch で検索するドキュメントを保存するための最初のステップです。通常、インデックスは、一連のドキュメント (データ行) で構成されるデータベース内のテーブルと考えることができます。

PHP では、Elasticsearch-PHP クライアントを使用して Elasticsearch と対話できます。最初に Elasticsearch-PHP パッケージをインストールする必要があります:

composer require elasticsearch/elasticsearch

以下はインデックスを作成するサンプル コードです:

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'my_type' => [
                'properties' => [
                    'title' => [
                        'type' => 'text'
                    ],
                    'content' => [
                        'type' => 'text'
                    ],
                    'post_date' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss'
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

上記のコード内では、「my_index」という名前のファイルを作成し、「my_type」という名前の型も定義します。 「my_type」タイプの下に、title、content、post_date の 3 つのフィールドを定義しました。

  1. ドキュメントをインデックスに追加する

インデックスを作成した後、検索時に関連する結果を返すドキュメントをインデックスに追加する必要があります。

たとえば、「PHP 開発の実践」という記事を追加します。

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => '1',
    'body' => [
        'title' => 'PHP开发实战',
        'content' => '本文介绍如何在PHP中使用Elasticsearch实现搜索功能。',
        'post_date' => date('Y-m-d H:i:s')
    ]
];

$response = $client->index($params);
  1. データの検索

検索は、PHP の最も基本的かつ重要な部分です。 Elasticsearch 最もよく使用される関数の 1 つ。 Elasticsearch は、次のようなさまざまなクエリ方法をサポートしています。

  • 単純な文字列クエリ
  • 複合クエリ
  • 範囲クエリ
  • 正確な値のクエリ
  • 正規表現クエリ
  • ファジー クエリ
  • 集計クエリなど

以下は、テキストと日付範囲を利用した簡単な検索の例です。 条件:

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'match' => [
                            'title' => 'PHP'
                        ]
                    ],
                    [
                        'range' => [
                            'post_date' => [
                                'gte' => '2021-01-01 00:00:00',
                                'lte' => '2021-01-31 23:59:59'
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->search($params);

上記のコードでは、「match」クエリと「range」クエリを使用して、タイトルに「PHP」を含む記事と 2021 年 1 月以内に公開された結果を検索します。

  1. 結果処理

最後に、検索結果を PHP に返し、最終的にユーザーに表示できるように処理する必要があります。

$hits = $response['hits']['hits'];
foreach ($hits as $hit) {
    echo $hit['_source']['title'] . "
";
    echo $hit['_source']['content'] . "
";
    echo $hit['_source']['post_date'] . "
";
}

上記のコードでは、検索結果セット内の各ドキュメントを走査し、ドキュメントのタイトル、内容、リリース日を出力します。

概要

この記事では、PHP と Elasticsearch を組み合わせて検索機能を実装する方法を紹介します。この記事を読むことで、インデックスの作成、ドキュメントの追加、データの検索、結果の処理などの基本的な操作について学ぶことができます。もちろん、Elasticsearch には、集計クエリ、強調表示、並べ替えなどの多くの使用テクニックもあります。これらのテクニックは、Elasticsearch をより効果的に使用して検索機能を実装するのに役立ちます。

以上がElasticsearch を使用して PHP 開発で検索機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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