项目地址: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