es环境安装及php对接使用

Elasticsearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

安装

本文只介绍windows环境的使用及安装。

  • 进入官网:
    https://www.elastic.co/cn/downloads/elasticsearch
  • 下载对应版本:

注意:下载对应的版本,版本号要跟php composer 里面的elasticsearch/elasticsearch 的版本号一致。

在这里插入图片描述
在这里插入图片描述

比如本次下载的 elasticsearch 为8.4版本,composer 包elasticsearch/elasticsearch也要8.4版本。否则在使用php客户端的时候会出错。

  • 解压安装包:
    进入解压的文件,找到bin 目录,执行elasticsearch.bat

第一次执行应该会报错,因为默认是开启ssl认证和密码认证这些的。
需要进入config 目录,找到elasticsearch.yml 配置文件:

在这里插入图片描述
在这里插入图片描述

修改:xpack.security.enabled: true 为falsexpack.security.http.ssl:enabled: true 为false# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"            

保存,再次执行elasticsearch.bat,在浏览器中访问127.0.0.1:9200,有返回json表示成功
在这里插入图片描述

安装es可视化插件 elasticsearch-head

该插件需要node支持。

源代码下载:https://github.com/mobz/elasticsearch-head

  • 进入目录:
    打开cmd控制窗口,或者用编辑器打开项目然后打开命令窗口。
  • 执行安装命令:npm install
  • 运行命令: npm run start

运行后,打开浏览器http://localhost:9100,查看界面。可以在数据浏览里面查看数据
请添加图片描述

laravel 对接使用

本文以laravel9为测试用例。使用scout包 作为laravel的全文检索。

  • 下载composer scout
composer require laravel/scout
  • 下载scout 可用的elasticsearch 驱动支持
    目前支持的驱动有:
composer require babenkoivan/elastic-scout-drivercomposer require babenkoivan/elastic-scout-driver-plus

本文用的是 composer require babenkoivan/elastic-scout-driver

  • 安装完后:执行发布命令
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

此命令将会在你的 config 目录下 生成一个 scout.php 配置文件
你需要把scout驱动更改为es驱动:

'driver' => env('SCOUT_DRIVER', 'elastic'),

生成es配置命令:

php artisan vendor:publish --provider="Elastic\Client\ServiceProvider"

此命令会生成es驱动配置文件config/elastic.client.php 更改对应的配置:

<?php declare(strict_types=1);return ['default' => env('ELASTIC_CONNECTION', 'default'),'connections' => ['default' => ['hosts' => [env('ELASTIC_HOST', 'localhost:9200'),],],],
];

laravel 模型中使用搜索引擎

用laravel 模型操作es,数据源其实是有两份的。数据库里面一份,es里面一份。es里面的数据跟数据库里面的数据其实是一样的。模型检索数据的时候,用到全文检索,就是去es里面查询,如果没有用到就在数据库里面查询。
同时模型在curd的时候,会自动同步到es里面。

  • 创建一个模型:

<?phpnamespace App\Models;use DateTimeInterface;
use App\Models\BaseModel as Model;
use Laravel\Scout\Searchable;class Test extends Model
{use Searchable;protected $table='sys_test';protected function serializeDate(DateTimeInterface $date){return $date->format('Y-m-d H:i:s');}/*** 获取与模型关联的索引的名称。** @return string*/public function searchableAs(){return 'laravel';}}
  • 导入已有项目数据:

如果,你的项目中已经有数据在表中,需要把数据导入到es里面,就需要执行下面命令:

php artisan scout:import "App\Models\Test"
  • 使用:

使用跟正常laravel模型大致操作一样,搜索的时候用search

 //查询$data= Test::search('李')->get();dd($data->toArray());

官方包正常使用es

下载官方扩展

composer require elasticsearch/elasticsearch

注意:composer require elasticsearch/elasticsearch 版本需要跟 你下载的es安装包保持一致

# 我下载的8.4 版本,8.4版本需要 elastic/transport 8.4
composer require elasticsearch/elasticsearch ^8.4

本测试环境: php8.0 laravel9 composer2.2.8

添加配置文件:

添加配置文件:
config/database.php 里面加上如下配置://es 配置'elastic'=>['hosts' => explode(',',env('ELASTIC_HOST')),]

env 添加配置:ELASTIC_HOST=http://127.0.0.1:9200

创建服务提供者:EsServiceProvider.php

<?phpnamespace App\Providers;use Elastic\Elasticsearch\ClientBuilder;
use Illuminate\Support\ServiceProvider;class EsServiceProvider extends ServiceProvider
{/*** Register any application services.** @return void*/public function register(){$this->app->singleton('Es',function (){// 从配置文件读取 Elasticsearch 服务器列表$builder = ClientBuilder::create()->setHosts(config('database.elastic.hosts'));// 如果是开发环境if (app()->environment()==='local'){// 配置日志,Elasticsearch 的请求和返回数据将打印到日志文件中,方便我们调试$builder->setLogger(app('log')->driver());}return $builder->build();});}/*** Bootstrap any application services.** @return void*/public function boot(){//}
}

注册服务提供者:

config/app.php 里面加上刚才的服务提供者:

 App\Providers\EsServiceProvider::class, //es 搜索

使用:

//查询$params = ['index' => 'laravel','type' => 'sys_test','id' => 2
];$response = app('Es')->get($params);
dd($response->asArray());//更新$params = ['index' => 'laravel','type' => 'sys_test','id' => 2,'body' => ['doc' => ['name' => 'liceshi']]
];
$response = app('Es')->update($params);
dd($response->getContents());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/318554.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小沐学Java】VSCode搭建Java开发环境

文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器&#xff0c;可在桌面上…

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

让抖音引流更简单,利用自动评论引流策略

在当前的社会环境中&#xff0c;抖音已经成为了许多人日常生活中不可或缺的一部分。无论是年轻人还是中老年人&#xff0c;都对抖音充满了热情。然而&#xff0c;对于一些想要通过抖音变现的人来说&#xff0c;他们可能会感到困惑&#xff0c;不知道如何操作。今天&#xff0c;…

rust疑难杂症

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

nginx--自定义日志跳转长连接文件缓存状态页

自定义日志服务 [rootlocalhost ~]# cat /apps/nginx/conf/conf.d/pc.conf server {listen 80;server_name www.fxq.com;error_log /data/nginx/logs/fxq-error.log info;access_log /data/nginx/logs/fxq-access.log main;location / {root /data/nginx/html/pc;index index…

golang 基础知识细节回顾

之前学习golang的速度过于快&#xff0c;部分内容有点囫囵吞枣的感觉&#xff0c;写gorm过程中有很多违反我常识的地方&#xff0c;我通过复习去修正了我之前认知错误和遗漏的地方。 itoa itoa自增的作用在编辑error code时候作用很大&#xff0c;之前编辑springboot的error c…

【JAVA基础之反射】反射详解

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 1.反射 1.1 概述 是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b; 对于任意一个对象&#xff0c;都能够调用它…

代码随想录算法训练营DAY43|C++动态规划Part5|1049.最后一块石头的重量II、494.目标和、474.一和零

文章目录 1049.最后一块石头的重量II思路CPP代码 494.目标和回溯算法抽象成01背包问题CPP代码本题总结 474.一和零思路CPP代码 1049.最后一块石头的重量II 力扣题目链接 文章链接&#xff1a;1049.最后一块石头的重量II 视频链接&#xff1a;这个背包最多能装多少&#xff1f;L…

成都旅游攻略

第一天 大熊猫基地(55一人) 切记要去早&#xff0c;否则只能看到熊猫屁股 文殊院(拜文殊菩萨) 杜甫草堂(50一人) 宽窄巷子(旅游打卡拍照) 奎星楼街吃晚饭 这里的饭菜很可口 第二天 东郊记忆(成都故事.川剧变脸)主要是拍照打卡 春熙路 IFS国金中心(打卡熊猫屁屁) 太…

Spring Boot中使用Redis和Lua脚本实现延时队列

码到三十五 &#xff1a; 个人主页 延时队列是一种常见的需求。延时队列允许我们延迟处理某些任务&#xff0c;这在处理需要等待一段时间后才能执行的操作时特别有用&#xff0c;如发送提醒、定时任务等。文中&#xff0c;将介绍如何在Spring Boot环境下使用Redis和Lua脚本来实…

【C++STL详解(五)】--------list的介绍与使用

目录 前言 一、list的介绍 二、list的使用 Ⅰ.默认成员函数 1、构造函数 2、赋值重载 3、析构函数 Ⅱ、容量 1.size() Ⅲ、迭代器与遍历 1.beginend (正向迭代器) 2.rbeginrend (反向迭代器) 3.front 4.back Ⅳ、增删查改 1.push_front 2.pop_front 3.push_b…

vue3 + ts 快速入门(全)

文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建&#xff08;推荐&#xff09;vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …

CUDA共享内存

GPU中有两种类型的内存&#xff1a; 板载内存片上内存 全局内存是较大的板载内存&#xff0c;延迟相对较高&#xff1b;共享内存是较小的片上内存&#xff0c;具有相对较低的延迟。共享内存的常用用途&#xff1a; 块内线程的通信通道全局内存数据的可编程管理缓存高速暂存存…

设备能源数据采集新篇章

在当今这个信息化、智能化的时代&#xff0c;设备能源数据的采集已经成为企业高效运营、绿色发展的重要基石。而今天&#xff0c;我们要向大家介绍的就是一款颠覆传统、引领未来的设备能源数据采集神器——HiWoo Box网关&#xff01; 一、HiWoo Box网关&#xff1a;一站式解决…

confluence 设置https代理

使用nginx反待confluence并开启https后&#xff0c;登录confluence会一直提示&#xff1a;scheme、proxyName、proxyPort设置错误。 解决办法&#xff1a; find / -name server.xmlvi /opt/atlassian/confluence/conf/server.xml HTTP反代配置 HTTPS反代配置

jvm垃圾回收机制介绍

JVM&#xff08;Java虚拟机&#xff09;是Java程序的运行环境&#xff0c;它负责执行字节码文件。JVM的工作原理主要包括以下几个部分&#xff1a;类加载器、执行引擎、垃圾收集器和内存管理。类加载器负责加载字节码文件并将其转换成Java平台上的机器码&#xff0c;执行引擎负…

SQL数据库

一.什么是数据库 数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储。&#xff08;database 简称DB&#xff09; 数据库管理系统&#xff1a;管理数据库的大型软禁&#xff08;DataBase Management System 简称DBMS&#xff09; SQL&#xff1a;操作关系…

微信开发api、微信视频号开发

接口地址&#xff1a; http://api.videostui.com/finder/v2/api/login/checkLogin 接口说明 获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功新设备登录平台&#xff0c;次日凌晨会掉线一次&#xff0c;重新登录时需调用获取二维码且传appId取码&#xff0c;登录成…

莫比乌斯变换的数学原理

关键词&#xff1a;Mobius Transformations 一、说明 关于莫比乌斯变换&#xff0c;是一个代数几何变换的重要概念。也是双曲几何的重要理论&#xff0c;比如庞加莱盘就是建立在这个理论上&#xff0c;那么这个变换到底有哪些内容&#xff1f;本文将做出详细的解读。 二、线…

使用量排名前50的GPTs趋势和特征

Chatgpt的gpt商店已经有几千gpts了。目前哪些gpts比较受欢迎呢&#xff1f;有哪些趋势和投资呢? 根据whatplugin.ai&#xff08;截止日期为2024年3月&#xff09;&#xff0c;使用量最多的50个gpts数据分析结果如下&#xff1a; GPTs类型的分布情况如下&#xff1a; 图像生成…