一,安装Java SE环境

在安装Elasticsearch引擎之前,必须安装ES需要的软件环境,安装Java JDK和配置JAVA_HOME环境变量:

1,从https://www.oracle.com/technetwork/java/javase/downloads/index.html下载和安装Java SE开发包,我下载的是最新版本如图:

ElasticSearch对JRE的版本是敏感的,错误的版本,会导致ElasticSearch无法运行,下载归档的JRE,请从Java Archive下载合适的版本。

2,Java SE开发包安装完成之后,需要在服务器上创建JAVA_HOME环境变量

环境变量 JAVA_HOME,设置变量值是:C:\Program Files\Java\jdk-11.0.2

注释:在Windows系统中,“%环境变量名%”用法的含义是获取指定环境变量的值,创建JAVA_HOME环境变量的作用,是由于安装ElasticSearch需要引用Java SE开发包。

二,安装ElasticSearch服务

https://www.elastic.co/downloads/past-releases  下载对应的版本 我下载是5.4.0

 * php使用的版本要与ElasticSearch服务对应!

开启ElasticSearch 服务

进入 elasticsearch目录的bin,双击执行 elasticsearch.bat,该脚本文件执行 ElasticSearch 安装程序,稍等片刻,打开浏览器,输入 http://localhost:9200 ,显式以下画面,说明ES安装成功。

安装中文分词ik

下载 ik  https://github.com/medcl/elasticsearch-analysis-ik/releases

我的es版本是 5.4.0   ik 选择 5.4.0  必须找到对应的版本!!!!!!

下载后解压到一个文件夹下


并把解压后的内容放到 D:\elasticsearch-5.4.0\plugins\ik 文件夹下  没有ik文件夹自己建一个

成功后重启ElasticSearch 服务  ok!!  ElasticSearch服务安装成功!!!

项目内安装ElasticSearch 

composer require elasticsearch/elasticsearch

会自动加载合适的版本!5.4.0的elasticsearch版本

此时elasticsearch和php支持都安装成功!

thinkphp5内简单使用

先上代码    下面的方法是官方的一些样例整合

<?php
namespace app\index\controller;
require '../vendor/autoload.php';
use Elasticsearch\ClientBuilder;
class Search
{private $client;// 构造函数public function __construct(){$params = array('127.0.0.1:9200');$this->client = ClientBuilder::create()->setHosts($params)->build();}// 创建索引public function index() { // 只能创建一次$r = $this->delete_index();$r = $this->create_index();  //1.创建索引$r = $this->create_mappings(); //2.创建文档模板$r = $this->get_mapping();$docs = [];$docs[] = ['id'=>1,'name'=>'小明','profile'=>'我做的ui界面强无敌。','age'=>23];$docs[] = ['id'=>2,'name'=>'小张','profile'=>'我的php代码无懈可击。','age'=>24];$docs[] = ['id'=>3,'name'=>'小王','profile'=>'C的生活,快乐每一天。','age'=>29];$docs[] = ['id'=>4,'name'=>'小赵','profile'=>'就没有我做不出的前端页面。','age'=>26];$docs[] = ['id'=>5,'name'=>'小吴','profile'=>'php是最好的语言。','job'=>21];$docs[] = ['id'=>6,'name'=>'小翁','profile'=>'别烦我,我正在敲bug呢!','age'=>25];$docs[] = ['id'=>7,'name'=>'小杨','profile'=>'为所欲为,不行就删库跑路','age'=>27];foreach ($docs as $k => $v) {$r = $this->add_doc($v['id'],$v);   //3.添加文档}$r = $this->search_doc("删库 别烦我");  //4.搜索结果}// 创建索引public function create_index($index_name = 'test_ik') { // 只能创建一次$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;}}// 删除索引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 = 'users',$index_name = 'test_ik') {$params = ['index' => $index_name,'type' => $type_name,'body' => [$type_name => ['_source' => ['enabled' => true],'properties' => ['id' => ['type' => 'integer', // 整型'index' => 'not_analyzed',],'name' => ['type' => 'string', // 字符串型'index' => 'analyzed', // 全文搜索'analyzer' => 'ik_max_word'],'profile' => ['type' => 'string','index' => 'analyzed','analyzer' => 'ik_max_word'],'age' => ['type' => 'integer',],]]]];$response = $this->client->indices()->putMapping($params);return $response;}// 查看映射public function get_mapping($type_name = 'users',$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 = 'users') {$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 = 'users') {$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 = 'users') {$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 = 'users') {// 可以灵活添加新字段,最好不要乱添加$params = ['index' => $index_name,'type' => $type_name,'id' => $id,'body' => ['doc' => ['name' => '大王']]];$response = $this->client->update($params);return $response;}// 删除文档public function delete_doc($id = 1,$index_name = 'test_ik',$type_name = 'users') {$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 = "users",$from = 0,$size = 2) {$params = ['index' => $index_name,'type' => $type_name,'body' => ['query' => ['bool' => ['should' => [[ 'match' => [ 'profile' => ['query' => $keywords,'boost' => 3, // 权重大]]],[ 'match' => [ 'name' => ['query' => $keywords,'boost' => 2,]]],],],],'sort' => ['age'=>['order'=>'desc']], 'from' => $from, 'size' => $size]];$results = $this->client->search($params);return $results;}}

按1,2,3,4步骤进行 ,第三步就可以把数据库数据导入。

搜索成功!

thinkphp5 使用ElasticSearch 做搜索相关推荐

  1. 【实战】PHP如何使用 ElasticSearch 做搜索

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  2. PHP 使用 ElasticSearch 做搜索

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  3. 开放搜索开源兼容版,支持Elasticsearch做搜索召回引擎

    简介:9月15日阿里云开放搜索重磅发布[开源兼容版],搜索召回环节同时支持阿里云自研Ha3引擎与阿里云Elasticsearch引擎,并提供多行业的搜索算法能力,助力企业高效实现搜索效果深度优化. 9 ...

  4. 一文详解 | 开放搜索兼容Elasticsearch做召回引擎

    简介:开放搜索发布开源兼容版,支持阿里云Elasticsearch做搜索召回引擎,本文详细介绍阿里云ES用户如何通过接入开放搜索兼容版丰富行业分词库,提升查询语义理解能力,无需开发.算法投入,即可获得 ...

  5. 【Elasticsearch】十九种Elasticsearch字符串搜索方式

    1.概述 十九种Elasticsearch字符串搜索方式 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出 ...

  6. 【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 可以加我问问题,免费解答,有问题可以先私聊我,本人每天都在线,会帮助需要的人. 但是本博主因为某些原因, ...

  7. 无法从elasticsearch节点检索版本信息_【Elasticsearch 7 搜索之路】(一)什么是 Elasticsearch?...

    本篇文章对 Elasticsearch 做了基本介绍,在后续将通过专栏的方式持续更新,本系列以 Elasticsearch7 作为主要的讲解版本,欢迎各位大佬指正,共同学习进步涨工资! 一般涉及大型数 ...

  8. Elasticsearch系列-搜索操作

    Elasticsearch系列-搜索 指定查询的索引 URl查询 Query String Syntax Request Body查询 sort排序 from,size分页 _source 过滤字段 ...

  9. 干货 | Elasticsearch 可搜索快照深入详解

    0.可搜索快照认知前提 Elasticsearch 可搜索快照是 7.10 版本才有的新功能,之前呼声非常高. Elastic 官方网站用一整页面介绍,可见对该功能的重视. https://www.e ...

最新文章

  1. 从iOS证书申请到签名文件生成
  2. Linux常用指令和系统管理命令总结
  3. HALCON示例程序inspect_bottle_mouth.hdev玻璃瓶口缺陷检测
  4. 【渝粤教育】广东开放大学 社会保障学 形成性考核 (34)
  5. android intent参数是上次的结果,【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动...
  6. 【转】ctypes库的使用整理
  7. SQL Server CTE 递归查询全解
  8. .NET简谈插件系统开发模式
  9. WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)
  10. 定时任务_SpringTask 定时任务
  11. USB转串口,JLINK驱动安装(亲测有效)
  12. 点进来,你看到的就是全网最全c++11新特性(持续整理更新中)
  13. TCP粘包|拆包和解决方案
  14. 计算机技术预测蛋白质结构,蛋白质结构预测:生命科学的又一场竞争
  15. apache中配置404错误页的方法
  16. 江苏移动CM101s-MV100-EMMC- M8233_强刷固件包
  17. 达芬奇调色 Blackmagic Design DaVinci Resolve Studio 17 中文版,整合剪辑、视觉特效、动态图形、调色和音频后期制作
  18. 2018_9_22 模拟赛
  19. 3.5 Option
  20. easyAR的使用教程

热门文章

  1. 图形界面介绍Floorplan ToolBox
  2. 【Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写
  3. 艺赛旗RPA 第三方库系列(一):如何调用 Python 第三方库
  4. yota3墨水屏调节对比度_YOTA3墨水屏“直通”技术取代旧“投射”功能,体验全面升级-非常在线...
  5. 组装台式电脑如何重装系统图文教程
  6. Key Fact as Pivot: A Two-Stage Model for Low Resource Table-to-Text Generation 论文翻译
  7. Python爬虫系列(2)
  8. 解决闭包问题时 setTimeout执行顺序提前的问题
  9. mac m1 网络卡顿问题(微信有网浏览器没网)
  10. 微信已发图片群里服务器撤回,怎样撤回微信群发的信息?撤不回怎么办?