記一下Laravel中使用Scout+Elasticsearch 的問題

木大大發表於2022-01-24

在使用 Scout 進行搜尋時需要在相關模型中新增,如下兩個方法

/**
     * 獲取模型的可搜尋資料
     *
     * @return array
     */
    public function toSearchableArray()
    {
        $data = [
            'id' => $this->id,
            'title' => $this->title,
            'author' => $this->author,
            'content' => $this->content
        ];

        return $data;
    }

    // 索引名
    public function searchableAs()
    {
        return 'article_doc';
    }

搜尋 laralve + Elasticsearch 關鍵詞的話 很多的案例都是用的 tamayo/laravel-scout-elastic 但是部署安裝完這個驅動之後發現了個問題。

composer require tamayo/laravel-scout-elastic

paginate() 分頁方法無法正常使用,提示驅動程式碼中 $result['nbPages'] = $result['hits']['total'] / $perPage; 這行程式碼有問題。

$list =ApiArticle::search('title:'.$request->get('s'))
            ->paginate()
            ->toArray();
dd($list);

那麼可以肯定的是tamayo/laravel-scout-elastic這個驅動的bug了

在簡書上找到了介紹 tamayo/laravel-scout-elastic 出現的問題 www.jianshu.com/p/0bcba6d0e4da
,但是文章作者修改的解決方案對 laravel scout 的版本有要求導致我一直沒安裝成功。

後續,找了許久之後,在 packagist.org 網站 找到 babenkoivan/elastic-scout-driver

發現 composer require babenkoivan/elastic-scout-driver
Laravel Scout 的 Elasticsearch 驅動程式 使用起來還不錯。

babenkoivan/elastic-scout-driver 驅動介紹連結:
packagist.org/packages/babenkoivan...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章