ホームページ  >  記事  >  バックエンド開発  >  php Elasticsearchを使用して複数フィールドの結合クエリを実装するにはどうすればよいですか?

php Elasticsearchを使用して複数フィールドの結合クエリを実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-09-13 14:07:511044ブラウズ

如何使用php Elasticsearch实现多字段组合查询?

php Elasticsearch を使用して複数フィールドの組み合わせクエリを実装するにはどうすればよいですか?

はじめに:
Elasticsearch は、Lucene に基づく分散型オープン ソース検索エンジンであり、高速で信頼性の高い全文検索機能を提供し、大規模データの保存、取得、分析をサポートします。この記事では、php Elasticsearch ライブラリを使用して複数フィールドの結合クエリを実装し、さまざまな検索ニーズをより適切に満たす方法を検討します。

1. Elasticsearch のインストールと設定
php Elasticsearch ライブラリを使用するには、まず Elasticsearch をインストールして設定する必要があります。公式 Web サイトから Elasticsearch をダウンロードしてインストールし、実行されていることを確認できます。

2. php Elasticsearch ライブラリをインストールする
Composer を使用して php Elasticsearch ライブラリをインストールできます。プロジェクトのルート ディレクトリにcomposer.json ファイルを作成し、次の内容を追加します。

{
"require": {

"elasticsearch/elasticsearch": "^7.0"

}
}
次に、コマンド ライブラリをインストールする行で次のコマンドを実行します:
composer install

3. Elasticsearch に接続
次に、Elasticsearch に接続するためのクライアントを PHP コードで作成します。ファイルの先頭に次のコードを追加します:

require 'vendor/autoload.php';

$client = new ElasticsearchClient();

4. Index
検索対象のデータをインデックスに格納します。ここで、書籍情報を保存するとします。次のスニペットを PHP コードに追加します:

$params = [

'index' => 'books',
'body' => [
    'mappings' => [
        'properties' => [
            'title' => [
                'type' => 'text'
            ],
            'author' => [
                'type' => 'text'
            ],
            'category' => [
                'type' => 'keyword'
            ]
        ]
    ]
]

];

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

これにより、「books」という名前のインデックスが作成され、「title」、「author」、「category」の 3 つのフィールドが定義されます。

5. ドキュメントの追加
検索対象のドキュメントをインデックスに追加します。次のスニペットを PHP コードに追加します:

$params = [

'index' => 'books',
'id' => '1',
'body' => [
    'title' => 'The Great Gatsby',
    'author' => 'F. Scott Fitzgerald',
    'category' => 'Fiction'
]

];

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

6. 複数フィールドの組み合わせクエリを実行する
これで、複数フィールドの組み合わせクエリを実行する準備が整いました。次のスニペットを PHP コードに追加します:

$params = [

'index' => 'books',
'body' => [
    'query' => [
        'bool' => [
            'must' => [
                ['match' => ['title' => 'great']],
                ['match' => ['author' => 'fitzgerald']]
            ]
        ]
    ]
]

];

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

上記のコードでは、ブール クエリを使用して複数フィールドの組み合わせクエリを表しています。 Must 句では、2 つの match 句を使用して、それぞれ「タイトル」フィールドと「作成者」フィールドを照合します。これは、両方の条件を満たすドキュメントのみが取得されることを意味します。

7. 検索結果の処理
検索結果には、クエリ条件を満たすすべてのドキュメントが含まれます。検索結果を処理するには、PHP コードに次のスニペットを追加します:

foreach ($response['hits']['hits'] as $hit) {

echo $hit['_source']['title'];
echo $hit['_source']['author'];
echo $hit['_source']['category'];
echo "

";
}

8. 概要
この記事では、php Elasticsearch ライブラリを使用して複数フィールドの結合クエリを実装する方法を紹介しました。Elasticsearch のインストールと構成、php Elasticsearch ライブラリのインストール、への接続について説明しました。 Elasticsearch とインデックスの作成、ドキュメントの追加、および複数フィールドの組み合わせクエリの実行。php Elasticsearch ライブラリを使用すると、Elasticsearch を簡単に操作し、さまざまな検索ニーズを満たすことができます。

コード サンプルの概要.PNG
The上記はphpの使い方とElasticsearchで複数フィールドの組み合わせクエリを実装するための詳細な手順とサンプルコードです。

以上がphp Elasticsearchを使用して複数フィールドの結合クエリを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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