开始编写代码之前需要先安装elasticsearch,下面这个链接是安装步骤的连接,如未安装请先安装部署
安装步骤地址:https://blog.csdn.net/qq_33079999/article/details/120888139?spm=1001.2014.3001.5501

一、封装ES操作控制器

<?phpnamespace app\api\controller;require '../vendor/autoload.php';
use Elasticsearch\ClientBuilder;class ElasticSearch
{private $client;// 构造函数public function __construct(){$params = array('IP:9200');$this->client = ClientBuilder::create()->setHosts($params)->build();}// 创建索引public function create_index($index_name = 'test_ik') { // 只能创建一次$params = ['index' => $index_name,'body' => ['settings' => ['number_of_shards' => 1,'number_of_replicas' => 0],'mappings' => ['my_type' => ['_source' => ['enabled' => true],'properties' => ['first_name' => ['type' => 'string','analyzer' => 'standard'],'age' => ['type' => 'integer']]]]]];try {return $this->client->indices()->create($params);} catch (Elasticsearch\Common\Exceptions\BadRequest400Exception $e) {$msg = $e->getMessage();$msg = json_decode($msg,true);return $msg;}}// 删除索引public function delete_index($index_name = 'test_ik') {$params = ['index' => $index_name];$response = $this->client->indices()->delete($params);return $response;}// 创建文档模板public function create_mappings($type_name = 'goods',$index_name = 'test_ik') {$params = ['index' => $index_name,'type' => $type_name,'body' => [$type_name => ['_source' => ['enabled' => true],'properties' => ['id' => ['type' => 'integer', // 整型'index' => 'not_analyzed',],'title' => ['type' => 'string', // 字符串型'index' => 'analyzed', // 全文搜索'analyzer' => 'ik_max_word'],'content' => ['type' => 'string','index' => 'analyzed','analyzer' => 'ik_max_word'],'price' => ['type' => 'integer']]]]];$response = $this->client->indices()->putMapping($params);return $response;}// 查看映射public function get_mapping($type_name = 'goods',$index_name = 'test_ik') {$params = ['index' => $index_name,'type' => $type_name];$response = $this->client->indices()->getMapping($params);return $response;}// 添加文档public function add_doc($id,$doc,$index_name = 'test_ik',$type_name = 'goods') {$params = ['index' => $index_name,'type' => $type_name,'id' => $id,'body' => $doc];$response = $this->client->index($params);return $response;}// 判断文档存在public function exists_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {$params = ['index' => $index_name,'type' => $type_name,'id' => $id];$response = $this->client->exists($params);return $response;}// 获取文档public function get_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {$params = ['index' => $index_name,'type' => $type_name,'id' => $id];$response = $this->client->get($params);return $response;}// 更新文档public function update_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {// 可以灵活添加新字段,最好不要乱添加$params = ['index' => $index_name,'type' => $type_name,'id' => $id,'body' => ['doc' => ['title' => '苹果手机iPhoneX']]];$response = $this->client->update($params);return $response;}// 删除文档public function delete_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {$params = ['index' => $index_name,'type' => $type_name,'id' => $id];$response = $this->client->delete($params);return $response;}// 查询文档 (分页,排序,权重,过滤)public function search_doc($keywords = "电脑",$index_name = "test_ik",$type_name = "goods",$from = 0,$size = 2) {$params = ['index' => $index_name,'type' => $type_name,'body' => ['query' => ['bool' => ['should' => [[ 'match' => //match是精确查询,可以用match_phrase[ 'title' => ['query' => $keywords,'boost' => 3,   // 权重大'slop'  => 20,  // 20表示中文分词器将搜索内容分成了两个词或多个词,这个两个词之间可以相隔多少个字查询]]],[ 'match' => [ 'content' => ['query' => $keywords,'boost' => 2,'slop' => 100, // 100表示中文分词器将搜索内容分成了两个词或多个词,这个两个词之间可以相隔多少个字查询]]],],],],'sort' => ['price'=>['order'=>'desc']],'from' => $from,'size' => $size,]];$results = $this->client->search($params);
//        $maxScore  = $results['hits']['max_score'];
//        $score = $results['hits']['hits'][0]['_score'];
//        $doc   = $results['hits']['hits'][0]['_source'];return $results;}}

二、使用方法

<?phpnamespace app\api\controller;use think\Controller;class Testelasticsearch extends Controller
{private $elasticController;public function __construct(){$this->elasticController = new Elasticsearch();}//创建索引public function create_index(){$this->elasticController->create_index();}//添加文档public function add_doc(){//      $id,$doc,$index_name = 'test_ik',$type_name = 'goods'$id = 2;$doc = ['title'=>'今天星期三1','content'=>'你可以在一个创建索引 API 中指定任何参数。所有的参数通常会注入请求体中的 body 参数下'];$this->elasticController->add_doc($id,$doc);}//获取文档public function get_doc(){//      $id = 1,$index_name = 'test_ik',$type_name = 'goods'$all_doc = $this->elasticController->get_doc();print_r($all_doc);}}

到这里就全部结束了,超级简单,如有疑问欢迎在评论区打出!

PHP + elasticsearch的使用方法,PHP使用ES的超级简单方法相关推荐

  1. 将品牌机预装的 Windows 7 家庭版升级为 Windows 7 旗舰版的超级简单方法

    在 Windows 7 诸版本中,旗舰版是功能最全的版本.目前"电脑城"主流品牌机之所以预装 Windows 7 家庭版而不是旗舰版,究其原因非常简单:完全基于最大限度降低成本和抢 ...

  2. Win7家庭版升级为Win7旗舰版;超级简单方法

    在 Windows 7 诸版本中,旗舰版是功能最全的版本.目前"电脑城"主流品牌机之所以预装 Windows 7 家庭版而不是旗舰版,究其原因非常简单:完全基于最大限度降低成本和抢 ...

  3. 转 Win7家庭版升级为Win7旗舰版;超级简单方法

    Win7家庭版升级为Win7旗舰版;超级简单方法 在 Windows 7 诸版本中,旗舰版是功能最全的版本.目前"电脑城"主流品牌机之所以预装 Windows 7 家庭版而不是旗舰 ...

  4. 公式居中,编号右对齐 超级超级简单方法

    (1)用mathtype打完公式后 (2) 加上 # (3) 打编号 点回车 这时候就会 自动的公式居中 编号右对齐. 这是我知道的最最最最简单的方法了,比制表位,表格啥的方法容易简便很多.

  5. python处理excel的方法有哪些_Python操作Excel简单方法

    今天一同学给我发来一个Excel文件,让我帮他找一些信息,打开一开 8000多条数据.自己手工处理是不可能完成的的啦.作为一名程序员,当然要用程序来处理.处理生活中的问题当然是Python最为方便啦. ...

  6. 利用青龙面版实现内网穿透,超级简单方法

    这是来自群里四天写的脚本,也欢迎你大家来113815925畅聊,目前这只支持端口5700刚好适合之前教大家手机搭建青龙面版的教程,不废话来教程了 第一步我们先拉库: ql raw https://gh ...

  7. 超级简单方法解决秒杀超卖和重复购买问题

    一.基本原则 1.SQL加库存数量判断:防止库存变成负数 2..数据库加唯一索引:防止用户重复购买 二.举例说明 1.开启事务 2.商品表减库存,库存数量要大于0 update miaosha_goo ...

  8. 身体彻底排毒的简单方法

    身体彻底排毒的简单方法    身体彻底排毒的简单方法                     ★如果肝脏有了毒素表现在:   1.指甲表面有凸起的棱线,或是向下凹陷.中医认为"肝主筋&quo ...

  9. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

最新文章

  1. MySQL Group Replication 介绍
  2. 程序员面试金典 - 面试题 05.07. 配对交换(位运算)
  3. Python学习笔记:requests库
  4. 从零开始学前端:标签渐变和媒体查询 --- 今天你学习了吗?(CSS:Day25)
  5. crc错误 modbus poll_干货丨从Modbus开始说现场总线!
  6. barmanager 不显示_这个双十一,摄影师的显示器该换了
  7. npm安装模块版本符_Java SE 9:模块和模块描述符基础知识(第2部分)
  8. Extmail企业邮箱构建指南
  9. SecureCRT for Mac(强大的终端SSH工具)
  10. 设置HTML元素的透明度
  11. 利用SPSS Modeler进行数据挖掘——探究不同程序语言的就业情况
  12. PowerBuilder快速入门实践
  13. 魔兽世界怀旧服服务器显示地图,魔兽世界怀旧服:1-60级地图任务路线大全,快来拿走收藏!部落篇...
  14. 智能不止联络,容联助力银行以服务创造价值
  15. OpenCV VideoCapture使用方法(视频文件、摄像头、网络视频文件)
  16. Windows上USB设备检测
  17. 苹果手机用什么蓝牙耳机好?适合苹果的音乐蓝牙耳机推荐
  18. Xgboost实践 | 第一名天池o2o优惠券的使用预测思路完整版
  19. JVM堆内存(新生代,老年代,Xms,Xmx)学习整理
  20. vue生命周期(超详解!)

热门文章

  1. 大华摄像头WEB页面集成
  2. oracle返回当年的第一天,oracle 获取 当年第一天 当月第一天
  3. 使用Ansible部署器设置一个小型的TF+K8s实验室
  4. OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV
  5. ERP与MBA的关系
  6. [Minecraft]基于Forge的1.8.9MOD开发教程——第二讲:创建一个空Mod
  7. postman批量运行和参数化
  8. Datawhale组队学习NLP之transformer Task 01
  9. 蓝牙耳机牌子排行榜2020:性能最强的蓝牙耳机排名前十
  10. 一个计算机专业学生几年的Java编程经验汇总