検索
ホームページPHPフレームワークThinkPHPThinkPHP6 で Elasticsearch を使用する方法

ThinkPHP6 で Elasticsearch を使用する方法

Jun 20, 2023 pm 12:09 PM
thinkphpelasticsearchチュートリアル

現在のインターネット時代では、大量のデータが爆発的に増加しており、検索エンジンの重要性がますます高まっています。 Elasticsearch は、拡張性の高い全文検索エンジンとして、開発者にとって検索問題を解決するための最初の選択肢となりつつあります。
この記事では、ThinkPHP6 で Elasticsearch を使用してデータ取得および検索機能を実装する方法を紹介します。それでは始めてみましょう。

ステップ 1: elasticsearch-php のインストール
composer を使用して公式 elasticsearch-php ライブラリをインストールします

composer require elasticsearch/elasticsearch

その後、configuresearch.php ファイルに Elasticsearch 接続構成情報を書き込む必要があります

return [
    'host' => ['your.host.com'],
    'port' => 9200,
    'scheme' => 'http',
    'user' => '',
    'pass' => ''
];

ここにはパスワードがないことに注意してください。オンラインでデプロイする場合は、パスワードを追加し、接続が安全であることを確認するために https を使用して接続する必要があります。

ステップ 2: laravel-scout のインストール
laravel-scout は、Laravel 用の Eloquent ORM 全文検索拡張パッケージです。Elasticsearch の統合を実現するには、ThinkPHP6 にインストールする必要があります。インストールするには、次のコマンドを使用します。 :

composer require laravel/scout

ステップ 3: laravel-scout-elastic パッケージをインストールする
ThinkPHP6 では、Elasticsearch に接続するために拡張パッケージ laravel-scout-elastic を使用する必要があります。同様に、次のコマンドを使用してインストールします。

composer require babenkoivan/scout-elasticsearch-driver:^7.0

app.php でスカウトとエラスティック ドライバーを構成します

return [
    'providers' => [
        //...
        LaravelScoutScoutServiceProvider::class,
        ScoutElasticsearchElasticsearchServiceProvider::class,
        //...
    ],
    'aliases' => [
        //...
        'Elasticsearch' => ScoutElasticsearchFacadesElasticsearch::class,
        //...
    ],
];

次に、次のように configscout.php でモデルの検索エンジンを構成します。 # #

'searchable' => [
        AppModelsModel::class => [
            'index' => 'model_index',
            'type' => 'model_type'
        ],
    ],

上記の構成は、Model::class モデル オブジェクトを使用してデータを取得し、Model::class オブジェクトに対応するインデックス名を model_index として、タイプを model_type として定義することを示しています。

ステップ 4: 検索ロジックを定義する

Model クラスで Searchable トレイトを使用し、次のようにパブリック関数 toSearchableArray() 関数を宣言します。

<?php

namespace AppModels;

use LaravelScoutSearchable;

class Model extends Model
{
    // 使用scout可搜索的trait
    use Searchable;
    
    // 返回可被搜索的模型数据
    public function toSearchableArray()
    {
        return [
            'title' => $this->title,
            'content' => $this->content
        ];
    }

toSearchableArray() 関数が使用されます。検索可能なデータ フィールドを返すために、ここではタイトル フィールドとコンテンツ フィールドの例を示します。

ステップ 5: 検索関連 API

最後に、検索結果リスト、検索統計などの検索関連 API を作成します。そのためには、公式の Elasticsearch API をある程度理解している必要があります。詳細については、Elasticsearch の公式ドキュメントを参照してください。

たとえば、検索結果リスト API のコードは次のようになります。

use ElasticsearchClientBuilder;

class SearchController extends Controller
{
    //搜索结果列表
    public function list(Request $request)
    {
        $searchQuery = $request->input('q'); //搜索关键字

        //搜索操作
        $elasticsearch = ClientBuilder::create()->setHosts(config('elasticsearch.host'))->build();
        $response = $elasticsearch->search([
            'index' => 'model_index', // 索引名称
            'type' => 'model_type',   // 类型
            'size' => 1000,
            'body' => [
                'query' => [
                    'bool' => [
                        'should' => [
                            ['match' => ['title' => $request->input('q')]],
                            ['match' => ['content' => $request->input('q')]]
                        ]
                    ]
                ]
            ]
        ]);

        //格式化返回结果
        $result = [];
        foreach ($response['hits']['hits'] as $hit) {
            //搜索评分
            $hit['_score'];
            //搜索到的数据
            $result[] = $hit['_source'];
        }

        return json_encode($result);
    }
}

上記のコードは、Elasticsearch によって公式に提供されている ElasticsearchClientBuilder クラスを使用して、接続を作成し、キーワードをクエリし、取得します。結果リスト。この API の

$request->input('q') は、任意のキーワードに置き換えることができます。

記事はここで終わります 基本的にはElasticsearchを使って検索機能を実装できると思います。実際に問題が発生した場合は、公式ドキュメントを参照するか、問題を提起して詳細なサポートを求めてください。

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン