引言
平时我们存储数据用的最多的就是mysql,在前面的文章里我也分享过很多关于mysql的知识,今天我们来集成另外一种数据存储系统ES,它是一款NoSql型数据库,主要使用场景有商品搜索,文章搜索等,关键词就是搜索。 我们先简单介绍下ES。
(资料图片)
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
这是来自于百度百科的解释,其实我们就直接把它理解成搜索引擎就行了,接下来,我们就开始快速集成,然后上手使用吧!
安装ES
本篇介绍的是如何通过docker安装es,提前你得有docker环境
拉取ES镜像
docker pull elasticsearch:7.6.2复制代码
创建挂载目录
mkdir -p /Users/lezai/docker/volumes/data/elasticsearch/config/mkdir -p /Users/lezai/docker/volumes/data/elasticsearch/datamkdir -p /Users/lezai/docker/volumes/data/elasticsearch/plugins复制代码
编辑配置文件
vim /Users/lezai/docker/volumes/data/elasticsearch/config/elasticsearch.yml复制代码
elasticsearch.yml
http.host: 0.0.0.0复制代码
运行执行脚本
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -v /Users/lezai/docker/volumes/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /Users/lezai/docker/volumes/data/elasticsearch/data:/usr/share/elasticsearch/data \ -v /Users/lezai/docker/volumes/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.6.2复制代码
安装成功后
在浏览器输入 http://localhost:9200,如果出现以下内容,则代表安装成功
{ "name" : "43e2638f84ac", "cluster_name" : "elasticsearch", "cluster_uuid" : "hZKT7NQNRl-Dg2Xrb3isGg", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"}复制代码
配置项目
添加必要依赖
org.springframework.boot spring-boot-starter-data-elasticsearch org.springframework.boot spring-boot-starter-test test org.projectlombok lombok 1.18.18 复制代码
添加实体
其实这里的实体对应的就是ES索引 @Document(indexName = "sys_user") 代表映射的是sys_user 索引 @Field(type = FieldType.Keyword) 代表字段应设在es中是keyword类型
这里就不介绍过多的ES用法
package com.aims.springbootes.entity;import lombok.Builder;import lombok.Data;import org.springframework.data.annotation.Id;import org.springframework.data.elasticsearch.annotations.Document;import org.springframework.data.elasticsearch.annotations.Field;import org.springframework.data.elasticsearch.annotations.FieldType;import java.io.Serializable;import java.util.List;@Document(indexName = "sys_user") //文档@Data@Builderpublic class SysUser implements Serializable { @Id //主键 private String id; //ES中id不能定义为Long private String username; private String password; private int level; @Field(type = FieldType.Keyword) private List roles;}复制代码
添加操作es的dao
ElasticsearchRepository 遵循Spring-data的规范,所以操作es,就相当于我们使用jpa去操作数据库一样
package com.aims.springbootes.dao;import com.aims.springbootes.entity.SysUser;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import org.springframework.stereotype.Repository;import java.util.List;/** * 第一种方式,类似于JPA,编写一个ElasticsearchRepository * 第一个泛型为Bean的类型 * 第二个泛型为Bean的主键类型 */@Repositorypublic interface SysUserDao extends ElasticsearchRepository {}复制代码
添加配置信息
spring: elasticsearch: rest: uris: http://localhost:9200复制代码
编写test,测试添加数据到ES中
这里通过往ES中塞入1000条数据,我们运行下,但是我们现在不知道有没有插入进去。
@Test public void testInsert() { List list = new ArrayList<>(); list.add("teacher"); list.add("student"); list.add("admin"); list.add("leader"); for (int i = 0; i < 1000; i++) { int toIndex = new Random(1).nextInt(4); SysUser build = SysUser.builder() .password("123456") .username("AI码师") .level(i) .roles(list.subList(0, toIndex)) .build(); sysUserDao.save(build); } System.out.printf("结束"); }复制代码
在编写一个查询的,来验证是否插入成功
@Test public void testFindAll(){ Iterable all = sysUserDao.findAll(); all.forEach((sysUser)->{ System.out.printf(sysUser.getId()); }); }复制代码
到这已经集成了ES,更多Spring-Data语法可以参考JPA的写法,在IDEA中会有很多智能提示,帮助你写的。
集成Spring-data-es后的思考
使用spring-data-es 提供的ElasticsearchRepository 只能进行简单的增删改查操作,如果碰到一些稍微复杂的聚合操作,他就很难应付了,所以这里有几个建议:
如果只需要做简单增删改查操作,直接继承ElasticsearchRepository即可如果项目中有非常复杂的查询或聚合操纵,可以使用结合ElasticsearchRestTemplate做一些复杂的操作,这个包不需要再引用其他依赖,已经集成在spring-data-es里面了。如何利用客户端快速编写ES 语句
这里我要介绍一款软件 kibana,它和es是老组合了,通过它能够直接连接es,直接在页面编写ES语句,值得一提的是它的语法智能提示简直不要太棒了
Docker安装kibana
拉取镜像
这个一定要和es的版本保持一致,防止api不兼容
docker pull kibana:7.6.2复制代码
创建挂载目录
mkdir -p /Users/lezai/docker/volumes/data/kibana/config/复制代码
编辑配置文件
`vim /Users/lezai/docker/volumes/data/kibana/config/kibana.yml
## ** THIS IS AN AUTO-GENERATED FILE **## Default Kibana configuration for docker targetserver.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://elasticsearch:9200" ]xpack.monitoring.ui.container.elasticsearch.enabled: true
标签:
-
[ES三周年]如何使用SpringBoot 整合ES 当前看点
平时我们存储数据用的最多的就是mysql,在前面的文章里我也分享过很多关于mysql的知识,今天我们来集成另外一种数据存储系统ES,它是一款NoSql
-
上海均瑶集团董事长王均金:吉祥航空今年扭亏为盈是基础,国际航班恢复高峰或在暑运|每日速看
上海均瑶集团董事长王均金:吉祥航空今年扭亏为盈是基础,国际航班恢复高峰或在暑运:据澎湃,全国政协委员、上海均瑶(集团)有限公司董事长
-
谌家矶中学_谌家矶租房
1、、2021武汉公租房最新消息2、 今年,武汉市将通过社会化公开筹集方式,建立一批租赁住房项目库,全年新建、筹集租赁
-
巧华在农村最新视频(巧客ps)
1、我5月份的时候就够买了,陆续推荐了我好几个朋友来学,太喜欢这种引导式的学习方式了。2、一直在等他们出其他软件的课程。本文就为大家分享
-
每日看点!JavaScript技术入门
1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标
-
食品酒类白酒-报资讯
白酒(外文名:LiquorandSpirits),以粮谷为主要原料,以大曲、小曲或麸曲及酒母等为糖化发酵剂,经蒸煮、糖化、发酵、蒸馏而制成的蒸馏酒。又称烧
-
中国防卫科技学院
1、河北工商管理专修学院是经河北省教育厅批准、国家教育部备案的一所社会力量办学机构,具有高等教育办学资质。2、学院设在北
-
梦幻西游新区怎么赚钱呢_梦幻西游新区怎么赚钱
今天小编肥嘟来为大家解答以上的问题。梦幻西游新区怎么赚钱呢,梦幻西游新区怎么赚钱相信很多小伙伴还不知道,现在让我们一起来看看吧!1、开
-
个人怎么开通花呗分期付款_个人怎么开通花呗收款
1、首先我们需要在桌面打开支付宝,在个人主页找到花呗功能,点击进入。2、进入花苑后,向下滑动找到帮助中心,然后选择在线服
-
华森制药:接受韩盟盟华宝等机构调研
华森制药(SZ002907,收盘价:19 17元)发布公告称,2023年3月8日,华森制药接受韩盟盟华宝等机构调研,公司周智如徐君参与接待,并回答了调研机
-
林希儿图片
1、不是chan不是chan不是chan。本文到此结束,希望对大家有所帮助。
-
全球今头条!佳兆业今日复牌 2021年收益约355亿元
3月10日,佳兆业集团控股有限公司(简称“佳兆业”)在港交所发布复牌公告表示,佳兆业集团于今日9时起恢复买卖。当天,截至11时36分,佳兆业...
-
英国剑桥世界名人榜_关于英国剑桥世界名人榜的简介|世界报资讯
1、英国剑桥世界名人榜,也称为名人录,创建于1967年。该榜自创建以来,主要以录入名人书籍为主,先后已有科学界、体育
-
天天实时:惠民公安争分夺秒侦破入室盗窃案 仅用5小时价值6万余元手机追回
00:29齐鲁网·闪电新闻3月10日讯近日,惠民县某乡镇一超市报警称发生一起砸玻璃入室盗窃案,手机柜台被破坏后盗走价值六
-
excel怎么设置公式函数_excel怎么设置公式|今日快看
1、在桌面上新建一个超过表格,双击打开。2、打开表格后,输入一个组数据,可以看到这个总价单元格是数量和单价的乘积。3、在
-
【全球报资讯】来伊份(603777)3月9日主力资金净卖出276.81万元
截至2023年3月9日收盘,来伊份(603777)报收于18 0元,下跌2 07%,换手率0 77%,成交量2 58万手,成交额4666 7万元。
-
温度开关
1、温度开关是一种用双金属片作为感温元件的温度开关,电器正常工作时,双金属片处于自由状态,触点处于闭合 断开状态,当温度
-
查理和巧克力工厂国语完整版免费观看_查理和巧克力工厂国语版迅雷下载
1、已发送。2、请查收。本文到此分享完毕,希望对大家有所帮助。
-
智富资源投资(00007)拟发行1亿港元可换股票据
智通财经APP讯,智富资源投资(00007)公布,于2023年3月9日,公司与认购人上海简帧投资管理中心(有限合伙)订立认购协议。据此,公司已有条件同意
-
03.09盘后
延续昨日阳线今日市场謏幅垚开蚤盘沪指受制于5日线戗阻震荡回落3260点午盘沪指謏幅回升偭指30日线时至尾盘两市全天先抑后飏收盘于阴线成交量同
-
炒股不如“买表”?奢侈品手表投资五年平均回报跑赢标普500 天天热讯
波士顿咨询集团和二级市场交易商WatchBox的报告显示,自2018年年中以来,劳力士、百达翡丽和爱彼手表的价格平均每年上涨20%,涨幅超过标准普尔
-
呢组词造句_ne组词 世界滚动
1、呢的解释[ní]一种毛织物:~子。2、~绒。3、毛~。4、[ne]助词,用在句末(a 表示疑问,如“你干
-
上下左右 闪转腾挪!百米级叶片巨无霸完美运输|当前短讯
北极星风力发电网讯:近期,电气风电第二套自有运输工装设备启运,为广西华电柳州融水九元山二期风电项目运输百米级超长叶片。据悉,该风场所
-
天天精选!墨家村剧情能单过么_墨家村怎么去
1、可能是安装的时候文件被破坏所以没有MJ和CS的地图文件……2、办法就是全部删掉重新下载重新装既然文件装的时候有问
-
本性法师:希望中国佛教走向世界,讲好中国故事_当前聚焦
本性法师。受访者供图中新网北京3月9日电(记者宋宇晟)“我希望中国佛教走向世界,讲好中国故事,展现中国气派,服务中外
-
九州国际两室一厅一卫平面图
1、九州国际位于天津中心城区老城厢南马路四号地,本项目南临南马路,北临南城街,东临城厢中路。2、总规划占地27800平方
-
天天快看点丨芝麻不香怎么回事?
可能是在外面放的时间长所导致的,或是方法不对,在炒芝麻的时候要用细火慢炒才香炒芝麻时要在平底煎锅上排开,炒时要均匀。约有二、三粒芝麻飞
-
全球速看:绝地逃亡迅雷下载 RMVB 下载_绝地逃亡迅雷下载
1、《绝地逃亡》电影迅雷下载BT种子已发到你百度云盘:阳光的王玲。2、请在你的百度云盘--分享里查收。3、伸手党勿扰!
-
实力与自由竞争,在陈幸同、王艺迪、陈梦身上体现,只是各有侧重_热点
陈幸同的双打能力可要好于王艺迪和陈梦,为什么连个双打的国际参赛资格都拿不到呢?这一点是赢得了球迷的认可,去年陈幸同可是在国际赛场获得
-
天天亮点!邓一杰:黄金1813已多,1812加多干!
如题!全天小幅震荡整理,黄金基本上处于30分钟的小周期BOLL通道内反复震荡整理了一天,对于晚间行情来说,可能也就一波的事,晚间来说也就几