日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在當前互聯(lián)網(wǎng)時代,隨著海量數(shù)據(jù)的爆炸式增長,搜索引擎變得越來越重要。而Elasticsearch作為一個高度可擴展的全文搜索引擎,已經(jīng)逐漸成為開發(fā)者們解決搜索問題的首選。
本文將介紹如何在ThinkPHP6中使用Elasticsearch來實現(xiàn)數(shù)據(jù)檢索和搜索功能,讓我們開始吧。

第一步:安裝elasticsearch-php
使用composer安裝官方提供的elasticsearch-php庫

composer require elasticsearch/elasticsearch

登錄后復制

之后我們需要在configelasticsearch.php文件中書寫Elasticsearch連接配置信息,如下:

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

登錄后復制

注意的是這里沒有密碼,在線上部署時需要添加密碼并使用https方式連接,確保連接是安全的。

第二步:安裝laravel-scout
laravel-scout是Laravel的一個Eloquent ORM全文搜索擴展包,我們需要在ThinkPHP6中安裝它來實現(xiàn)Elasticsearch的集成,使用下面的命令安裝:

composer require laravel/scout

登錄后復制

第三步:安裝laravel-scout-elastic包
在ThinkPHP6中,我們需要使用擴展包laravel-scout-elastic以實現(xiàn)與Elasticsearch的連接。同樣地,使用下面的命令安裝:

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

登錄后復制

在app.php中配置scout和elastic driver

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

登錄后復制

接著,在configscout.php中配置模型的搜索引擎,如下:

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

登錄后復制

以上配置表明我們使用Model::class 模型對象檢索數(shù)據(jù),定義Model::class對象對應的索引名稱為model_index ,類型為model_type。

第四步:定義搜索邏輯
我們在Model類中使用Searchable trait并聲明一個public function toSearchableArray()函數(shù),如下:

<?php

namespace AppModels;

use LaravelScoutSearchable;

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

登錄后復制

toSearchableArray()函數(shù)用于返回可被搜索的數(shù)據(jù)字段,這里我們例舉了標題和內(nèi)容兩個字段。

第五步:搜索相關API
最后我們編寫搜索相關的 API,比如搜索結果列表,搜索統(tǒng)計數(shù)據(jù)等等。這需要我們對 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'];
            //搜索到的數(shù)據(jù)
            $result[] = $hit['_source'];
        }

        return json_encode($result);
    }
}

登錄后復制

以上代碼使用了Elasticsearch 官方提供的ElasticsearchClientBuilder類來創(chuàng)建連接,對關鍵字進行查詢,并取回結果列表。你可以將此API中的 $request->input('q') 替換為任何你想要的關鍵字。

文章到此結束,相信你已經(jīng)可以基本上使用Elasticsearch實現(xiàn)搜索功能了。若您在實踐中遇到問題,請參考官方文檔或提issue以獲得更多幫助。

以上就是如何在ThinkPHP6中使用Elasticsearch的詳細內(nèi)容,更多請關注www.xfxf.net其它相關文章!

分享到:
標簽:elasticsearch thinkphp 使用教程
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定