Maison >développement back-end >tutoriel php >elasticsearch的php客户端使用问题?
这是文档,
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html
问题在截图中:
补充:
谢谢答主 @lyt8384 。有点理不清思路,麻烦答主能否帮演示一下下面的示例:
要实现的效果就是在视图中的搜索框中输入关键词,搜索得到结果,主要问题是不知道控制器应该怎么写。
备注:github上的封装好像看起来都挺久没更新了,不知道对最新版本的elasticsearch支持怎么样,所以我想直接用官方的php客户端。
视图:
<code> <meta charset="utf-8"> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.bootcss.com/tether/1.3.2/css/tether.min.css" rel="stylesheet"> <div class="container"> <nav class="navbar navbar-light bg-faded"> <a class="navbar-brand" href="#">Navbar</a> <ul class="nav navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item"> <a class="nav-link" href="#">About</a> </li> </ul> <form class="form-inline pull-xs-right"> <input class="form-control" type="text" placeholder="Search"> <button class="btn btn-success-outline" type="submit">Search</button> </form> </nav> </div> <script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js"></script> <script src="https://cdn.bootcss.com/tether/1.3.2/js/tether.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"></script> </code>
路由:
<code><?php Route::group(['middleware' => 'web'], function () { Route::resource('/search', 'SearchController'); }); </code>
控制器:
<code><?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class SearchController extends Controller { public function index() { // } public function create() { // } public function store(Request $request) { // } public function show($id) { // } public function edit($id) { // } public function update(Request $request, $id) { // } public function destroy($id) { // } } </code></code>
模型:Article.php
<code><?php namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $fillable = [ 'title', 'content' ]; }</code></code>
这是文档,
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html
问题在截图中:
补充:
谢谢答主 @lyt8384 。有点理不清思路,麻烦答主能否帮演示一下下面的示例:
要实现的效果就是在视图中的搜索框中输入关键词,搜索得到结果,主要问题是不知道控制器应该怎么写。
备注:github上的封装好像看起来都挺久没更新了,不知道对最新版本的elasticsearch支持怎么样,所以我想直接用官方的php客户端。
视图:
<code> <meta charset="utf-8"> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.bootcss.com/tether/1.3.2/css/tether.min.css" rel="stylesheet"> <div class="container"> <nav class="navbar navbar-light bg-faded"> <a class="navbar-brand" href="#">Navbar</a> <ul class="nav navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item"> <a class="nav-link" href="#">About</a> </li> </ul> <form class="form-inline pull-xs-right"> <input class="form-control" type="text" placeholder="Search"> <button class="btn btn-success-outline" type="submit">Search</button> </form> </nav> </div> <script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js"></script> <script src="https://cdn.bootcss.com/tether/1.3.2/js/tether.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"></script> </code>
路由:
<code><?php Route::group(['middleware' => 'web'], function () { Route::resource('/search', 'SearchController'); }); </code>
控制器:
<code><?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class SearchController extends Controller { public function index() { // } public function create() { // } public function store(Request $request) { // } public function show($id) { // } public function edit($id) { // } public function update(Request $request, $id) { // } public function destroy($id) { // } } </code></code>
模型:Article.php
<code><?php namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $fillable = [ 'title', 'content' ]; }</code></code>
1、Larvae是自动载入的,不需要第一行引入,直接命名空间使用就行了。其实,你可以用一些别人封装好的去简化使用方式,例如https://github.com/fadion/Bouncy 这个。用起来简单很多。
2、用了1里面的,就没这个了。。上面的红框是请求来的,就是你把对应内容填到ES里的操作。写到你需要的地方就行了。例如添加数据,修改数据。下面的是响应来的。就是ES告诉你索引OK了。
ES呢,也可以理解为一个数据库。你也是需要像mysql那样,存进数据。然后检索。。只不过他的检索很强大,还有各种运算之类的。不要把ES当成一个类或者组件什么的。安装了就能全文搜。