记一下Laravel中使用Scout+Elasticsearch 的问题

在使用 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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 6

babenkoivan/scout-elasticsearch-driver 也不错

3年前 评论

请问用 babenkoivan/elastic-scout-driver 总是提示 No alive nodes. All the 1 nodes seem to be down. 是啥问题 9200能访问到服务启动了

1年前 评论
木大大 (楼主) 1年前
小民爱Laravel 1年前
ShiXianhui (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!