scout-elasticsearch-driver + laravel Demo学习

版权声明:廖圣平博客,未经博主允许不得转载。企鹅:1194008361 https://blog.csdn.net/qq_22823581/article/details/85333925

项目地址:https://github.com/yb19890724/laravel-es

1。在本地穿件数据库,修改.env 的信息 我的env文件点击下载

2。env中配置es 的地址。

3.根目录下执行

composer update 
php artisan laraveles
npm install
npm run dev

查看es 中是否有producs之类的数据,查看方式:
http://ip:9200/_cat/indices?v

配置域名
访问:yourhost/dashboard,结合后端,倒弄一番。

总结:

如果用

 $result = Category::search( $request->text)->get();

get 方式查询,则查询的是数据库的数据。

如果用
->paginateRaw();
或者
->raw() 方法
也就是:
$result = Category::search( $request->text)->raw();
则查询的为es中的数据(显然,这个我们想要的)

从这个demo中:

Shop::searchRaw( [
            /*'from'        => 1,
            'size'        => 2,*/
            "sort"        => [
                "_geo_distance" => [
                    "location" => [
                        "lat" => $lat,
                        "lon" => $lon
                    ],
                    "order"    => $request->sort,
                    "unit"     => "km"
                ]
            ],
            "post_filter" => [
                "geo_distance" => [
                    "distance" => $request->distance,
                    "unit"     => "km",
                    "location" => [
                        "lat" => $lat,
                        "lon" => $lon
                    ]
                ]
            ]
        ] );

用 searchRaw()查询的也是es数据。

个人感觉,都是基于es 官方的json语法转化,如果要更深入,自己封装orm,可能会好的理解es 的工作机制。
从基本官方提供的php SDK 封装 点击查看博客

从composer - Packagist
找到一个是ES封装的,和数据库查询的方式差不多。
有兴趣的同学可以学习一下。
https://packagist.org/packages/basemkhirat/elasticsearch

没有更多推荐了,返回首页