elasticsearch的安装与使用
1:官网进行下载
1 | https: //www.elastic.co/cn/elasticsearch/ |
2:这里我用的是7.15.2
3:进行下载解压至d 盘
4:接下来我们cmd 切换目录进行运行
5:打开浏览器进行查看
使用http://127.0.0.1:9200/
6:我们进行看一看我们的索引是否添加成功
http://127.0.0.1:9200/_cat/indices?v
接下来我们继续Kibana 的安装 安装一定要版本一定要匹配 Elasticsearch7.15.2 匹配 Kibanah7.15.2
Kibana是Elastic Stack家族内的一部分,它是一个管理网站,与ES(Elastic Search)集成可以用来管理ES的索引,除ES外它还可以跟Elastic家族的其他组件进行整合如logstash、Elasticsearch-Hadoop等。
相比我们之前讲过的elasticsearch-head,Kibana的功能要强大的多,更重要的是,Kibana为初学者准备了13059条的航班线路数据供我们使用。
1. 下载
标准版: https://artifacts.elastic.co/downloads/kibana/kibana-6.4.1-windows-x86_64.zip
免费版:https://artifacts.elastic.co/downloads/kibana/kibana-oss-6.4.1-windows-x86_64.zip
前者包含收费部分,但是需要申请一个30天试用期的许可证书,后者是符合Apache 2.0协议的免费版。本文使用了标准版,但是并未解锁商用部分的功能,没申请证书。
下载完解压到安装目录。
2:进行解压
3::cmd 进行启动Kibana
4:访问网址:
http://localhost:5601/
5:进行搜索
接下来我们进行es 的增删该查 可以参考以下博客
laravel 框架中使用es
1: 新建索引
//ES客户端链接 private $client; /** * 构造函数 * MyElasticsearch constructor. */ public function __construct() { $params = array( '127.0.0.1:9200' ); $this->client = ClientBuilder::create()->setHosts($params)->build(); } /** * 判断索引是否存在 * @param string $index_name * @return bool|mixed|string */ public function exists_index($index_name = 'mouth_test') { $params = [ 'index' => $index_name ]; try { return $this->client->indices()->exists($params); } catch (\Elasticsearch\Common\Exceptions\BadRequest400Exception $e) { $msg = $e->getMessage(); $msg = json_decode($msg,true); return $msg; } } /** * 创建索引 * @param string $index_name * @return array|mixed|string */ public function create_index($index_name = 'mouth_test') { // 只能创建一次 $params = [ 'index' => $index_name, 'body' => [ 'settings' => [ 'number_of_shards' => 5, 'number_of_replicas' => 0 ] ] ]; try { return $this->client->indices()->create($params); } catch (\Elasticsearch\Common\Exceptions\BadRequest400Exception $e) { $msg = $e->getMessage(); $msg = json_decode($msg,true); return $msg; } }
2:书写一个路由,进行测试
Route::get('create_index','EsController@create_index');
3:访问http://127.0.0.1:9200/_cat/indices?v 是否新建索引(也就是一个表)成功
5:larvelel 安装es组件
composer require elasticsearch/elasticsearch
4:接下来,我们进行数据的添加
/** * 添加文档(数据) * @param $id * @param $doc ['id'=>100, 'title'=>'phone'] * @param string $index_name 就是创建的表名称 * @param string $type_name * @return array */ public function add_doc($id,$doc,$index_name = 'mouth_test',$type_name = 'goods') { // 添加的数据 $data=[ 'id' => 1, 'username' => '王越', 'password' => 'admin', ]; $params = [ 'index' => $index_name, 'type' => $type_name, 'id' => $data['id'], //添加数据的唯一标识id 'body' => $data// 添加的数据 ]; $response = $this->client->index($params); return $response; }
写路由进行测试并进行访问
// 添加的数据 Route::get('add_doc','EsController@add_doc');
接下来我们进行查看数据是否添加一致 浏览器访问: http://localhost:9200/ + 索引名称+类型+id 进行访问
例如:http://localhost:9200/mouth_test/goods/1
5:搜索 及标红
/** * 搜索文档 (分页,排序,权重,过滤) * @param string $index_name * @param string $type_name * @param array $body * $body = [ 'query' => [ 'bool' => [ 'should' => [ [ 'match' => [ 'cate_name' => [ 'query' => $keywords, 'boost' => 4, // 权重大 ] ] ], [ 'match' => [ 'goods_name' => [ 'query' => $keywords, 'boost' => 3, ] ] ], [ 'match' => [ 'goods_introduce' => [ 'query' => $keywords, 'boost' => 2, ] ] ] ], ], ], 'sort' => ['id'=>['order'=>'desc']], 'from' => $from, 'size' => $size ]; * @return array */ public function search_doc($index_name = "mouth_test",$type_name = "goods",$body=[]) { $keyWord='王越'; //要搜索的关键字 $params = [ 'index' => $index_name, //搜索的索引名,也就是表名 'type' => $type_name, // 类型 'body' => [ 'query' => [ 'match' => [ 'username'=>[ 'query' => $keyWord //要搜索的关键字 ] ] ], // 搜索标红 'highlight'=>[ 'fields'=>[ 'username'=>[ 'pre_tags'=>[ '<span style="color: red">' ], 'post_tags'=>[ '</span>' ] ] ] ] ] ]; $results = $this->client->search($params); foreach ($results['hits']['hits'] as $key => $item) { $results['hits']['hits'][$key]['_source']['username'] = $item['highlight']['username'][$key]; } $results = array_column($results['hits']['hits'], '_source'); print_r($results) ; }
定义一个路由并进行访问
//搜索 Route::get('search_doc','EsController@search_doc');
6:接下来我们进行测试修改的数据
/** * 更新文档 * @param int $id * @param string $index_name * @param string $type_name * @param array $body ['doc' => ['title' => '苹果手机iPhoneX']] * @return array */ public function update_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods', $body=[]) { // 可以灵活添加新字段,最好不要乱添加 $data=[ 'id' => 1, 'username' => '王越6666666', 'password' => '11111888888', ]; $params = [ 'index' => 'mouth_test', 'type' => 'goods', 'id' => $data['id'], //根据数据的唯一标识id,进行更改数据,这里我测试的就是数据库的数据id; 'body' => [ //修改的数据 'username' => $data['username'], 'password' => $data['password'], ] ]; $response = $this->client->index($params); return $response; }:
书写路由并进行访问
//修改 Route::get('update_doc','EsController@update_doc');
我们浏览器进行访问
7:我们进行测试删除
/** * 删除文档 * @param int $id * @param string $index_name * @param string $type_name * @return array */ public function delete_doc($id = 1,$index_name = 'mouth_test',$type_name = 'goods') { $data=[ 'id' => 2, ]; $params = [ 'index' => 'mouth_test', 'type' => 'goods', 'id' => $data['id'], ]; $response = $this->client->delete($params); return $response; }
书写路由并访问
//删除 Route::get('delete_doc','EsController@delete_doc');
我们浏览器进行访问
有一篇博客其实我已经封装好啦,直接调用也可以
https://www.cnblogs.com/xiaoyantongxue/p/15352474.html
当然啦,我们也可以参考这个人的博客
https://blog.csdn.net/J2778322217/article/details/122813619?spm=1001.2014.3001.5502
https://blog.csdn.net/daxianyu666/article/details/122029561?spm=1001.2014.3001.5502
https://www.cnblogs.com/jerry-min/p/14547736.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现