ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるElasticsearchをベースとした関連検索機能の開発実践

PHPにおけるElasticsearchをベースとした関連検索機能の開発実践

王林
王林オリジナル
2023-10-03 09:07:41796ブラウズ

PHP 中基于 Elasticsearch 的相关搜索功能开发实践

PHP における Elasticsearch に基づく関連検索機能の開発実践

概要
現代の Web 開発において、検索機能は非常に重要な部分です。 Elasticsearch は、強力で柔軟な分散検索エンジンとして、さまざまな Web アプリケーションで広く使用されています。この記事では、PHP で Elasticsearch を使用して関連する検索機能を開発する方法を紹介し、具体的なコード例を添付します。

Elasticsearch のインストールと構成
まず、Elasticsearch をインストールし、関連する構成を実行する必要があります。 Elasticsearch 公式 Web サイト (https://www.elastic.co/cn/downloads/elasticsearch) のダウンロード ページからオペレーティング システムに適したバージョンを選択し、公式のインストール手順に従ってインストールできます。

インストールが完了したら、Elasticsearch 構成ファイル elasticsearch.yml を変更する必要があります。このファイルを開き、次の設定を見つけて変更します。

cluster.name: my-cluster
node.name: my-node
network.host: 0.0.0.0
http.port: 9200

Elasticsearch PHP クライアントの使用
PHP で Elasticsearch を使用するには、Elasticsearch PHP クライアントをインストールする必要があります。 Composer を通じてインストールできます。コマンドは次のとおりです:

composer require elasticsearch/elasticsearch

インストールが完了したら、次のコードを使用して PHP で Elasticsearch クライアントを初期化できます:

require 'vendor/autoload.php';

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

インデックスを作成し、マッピング
使用中 Elasticsearch で検索を行う前に、インデックスを作成し、マッピングを設定する必要があります。インデックスはデータベースのテーブルに似ており、マッピングはテーブルのフィールドに似ています。各インデックスには複数のマッピングを含めることができます。

次に、インデックスの作成とマッピングの例を示します。

$params = [
    'index' => 'my_index',
    'body' => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                ],
                'content' => [
                    'type' => 'text',
                ],
                'created_at' => [
                    'type' => 'date',
                ],
            ],
        ],
    ],
];

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

ドキュメントをインデックスに追加
インデックスの作成が完了したら、データをインデックスに追加して、検索することができます。以下は、インデックスにドキュメントを追加する例です。

$params = [
    'index' => 'my_index',
    'id' => '1',
    'body' => [
        'title' => 'Elasticsearch 示例文章',
        'content' => '这是一个关于Elasticsearch的示例文章。',
        'created_at' => '2022-01-01',
    ],
];

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

ドキュメントの検索
インデックスとデータを使用して、検索操作を実行できます。以下は、単純な全文検索の例です。

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'Elasticsearch',
            ],
        ],
    ],
];

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

上記のコードは、コンテンツに「Elasticsearch」キーワードを含むすべてのドキュメントを返します。

集計とフィルタリング
単純な全文検索に加えて、Elasticsearch は強力な集計およびフィルタリング機能も提供します。以下に例を示します。

$params = [
    'index' => 'my_index',
    'body' => [
        'aggs' => [
            'avg_views' => [
                'avg' => [
                    'field' => 'views',
                ],
            ],
        ],
        'query' => [
            'term' => [
                'category' => 'technology',
            ],
        ],
    ],
];

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

上記のコードは、「テクノロジー」として分類されたドキュメントの平均ビュー数を返します。

概要
この記事では、Elasticsearch を使用して PHP で関連する検索関数を開発する方法を紹介します。 Elasticsearch のインストールと設定、Elasticsearch PHP クライアントの使用、インデックスとマッピングの作成、インデックスへのドキュメントの追加について説明します。さらに、単純な全文検索機能と集約フィルタリング機能の使用法を示します。上記のサンプル コードは参考用であり、実際のプロジェクトでは特定のニーズに応じて調整する必要があります。

この記事が、PHP の Elasticsearch に基づく関連検索機能の理解と使用に役立つことを願っています。

以上がPHPにおけるElasticsearchをベースとした関連検索機能の開発実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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