当前位置:首页>新闻 > 正文

天天快看点丨[ES三周年]如何使用SpringBoot 整合ES

  • 2023-03-11 04:08:37来源:腾讯云

引言

平时我们存储数据用的最多的就是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

全球热门:office办公软件学习_office办公软件有哪些

1、金山WPS想必很多人都很熟悉。它是一款国产自研软件,界面与MSoffice非常相似,因此在国内应用广泛。主要有三

环球视点!中兴商业(000715)3月10日主力资金净买入569.53万元

截至2023年3月10日收盘,中兴商业(000715)报收于6 81元,下跌1 87%,换手率3 61%,成交量14 99万手,成交额1 03亿元。

头条焦点:世界第一例艾滋病患者被美国报道是在哪一年_世界第一例艾滋病患者

1、第一位病人是33岁的美国人。2、他以前很健康,1981年1月突然发烧,再加上干咳,呼吸困难。3、3月份,他被洛杉矾一

【世界快播报】琅琊榜怎么读

1、海宴小说《琅琊榜》中的人物。2、靖王之母,原是林府派进宫里照顾宸妃林乐瑶的医女。3、年轻时被化名梅石楠的林燮所救,倾

环球最新:两会新华时评|在国家进步中拥抱更好的自己

新华社记者任沁沁当“95后”的吉列子日代表把乡亲们的关切带到全国两会,无数年轻人也在国家发展新蓝图中谋划着更美好的明天。

环球观察:清远清新“四个加速”助推行政检察驶入“快车道”

加速扩大“提前介入+全面审查”办案规模,助推行政非诉执行监督提质增效;加速探索“大数据赋能+社会治理”监督途径,助推行政违法行为监督...

环球今热点:寨的拼音怎么写_寨的拼音

1、寨寨stockadedvillage;寨zhài(1)(形声。2、从木,赛省声。3、本义:

世界报道:造纸行业成本下行产品提价 多家公司忙扩产

证券时报记者黄翔近期,多种纸品价格涨势汹汹,多家纸企相继宣布提价,最高涨幅达到1000元 吨,行业扩产也在同步进行。日

全球今亮点!讨论:陈梦王曼昱孙颖莎三大核心,谁在大满贯夺冠的概率最高?

如果半决赛孙颖莎面对王曼昱,这就是一场可以说比决赛还精彩的半决赛了,两个人实力相当,王曼昱过往略胜一筹,但是这两年孙颖莎也在不断进步

环球热讯:逃跑吧少年号密码土豪号电脑_逃跑吧少年好号密码

1、你可以问问氪金大佬。2、看看他给不给你一个号。本文就为大家分享到这里,希望小伙伴们会喜欢。

今日快看!手机chrome怎么打开开发者模式_chrome打开开发者模式的方法步骤

第一步。首先打开浏览器,在界面右上方找到下图箭头所指的功能图标。点击打开菜单界面。2 打开这个菜单界面后,在更多工具选项

每日头条!百余家公园推出赏花片区 总面积超680万平方米中新社北京分社

北京的春花。中新网北京新闻3月9日电(记者徐婧)正值春日,北京气温渐升。记者从北京市园林绿化局获悉,今春北京在121家

快看:打非治违不手软!长沙应急曝光7起典型案例

长沙晚报掌上长沙3月9日讯(全媒体记者刘琦通讯员张海蛟)为加强警示教育,长沙市应急管理局于3月8日从全市上月安全生

今日热闻!2023杭州太子湾公园要预约吗?

2023杭州太子湾公园要预约吗?平时不需要预约,郁金香花展期间需要预约,时间为2023年3月10日到4月16日。预约方式:通过“杭州西湖风景名胜区

环球热资讯!色降2之万里驱魔

1、第一部没有后缀。2、就叫色降。本文到此分享完毕,希望对大家有所帮助。

环球滚动:怀地黄的功效与作用及食用方法_怀地黄

1、熟地味甘微温质润,既补血滋阴,又能补精益髓。2、如熟地配以当归、白芍、川芎就是大名鼎鼎的治疗血虚症的四物汤。3、熟地配白芍能养肝,配

天天快播:中国电信5G+4K+千兆助力 2023中国环塔拉力赛发布会

中国电信5G+4K+千兆助力2023中国环塔拉力赛发布会,3月1日15:30,自治区文化和旅游厅联合自治区体育局共同举行的2023中国环塔(国际)拉力赛开幕新

天天快播:好男人电视剧全集在线观看_好男人电视剧

1、孙红雷饰演陆远旅美西餐厨师,在正常人眼里,陆远是个人渣,是个抽烟酗酒嗜赌如命的无赖,可以用流利的英语、法语、西班牙语

环球热头条丨帕特里西奥希望赢下皇家社会 意媒罗马不想重蹈姆希塔良的覆辙已经接近与斯莫林续约

一、帕特里西奥希望赢下皇家社会直播吧3月9日讯北京时间本周五凌晨1:45,欧联杯1 8决赛首回合罗马将坐镇主场迎战皇家

【当前独家】山东蓝晶生物技术有限公司

1、山东蓝晶生物技术有限公司于2019年09月09日成立。2、法定代表人程亚平,公司经营范围包括:生物技术研发、技术

世界快看:郭亮村在哪_河南郭亮村在哪及郭亮村位置指南

1、河南郭亮村在哪?郭亮村位于河南省辉县西北60公里的太行山深处,海拔1700米的高高悬崖上,以秀美的山岭、独特的石舍而

全球短讯!当日快讯:涛涛车业:创业板IPO网上发行中签率0.0232401397%

涛涛车业3月8日发布首次公开发行股票并在创业板上市网上申购情况及中签率公告,回拨后,网下最终发行数量为132666万股,占扣除最终战略配售数

天天视讯!Studio EA Motive更新了著名的死亡空间预告片

《死亡空间》重制版的开发者发布了原版游戏的更新预告片,数百万游戏玩家记住了主角死亡的硬镜头和摇篮曲《闪烁、闪烁、小星星》的旋律的独

【热闻】闪传电脑版官网下载_闪传电脑版官网

1、很多朋友都在问闪传怎么连接电脑?闪传如何连接电脑?所以小编今天带来了闪传连接电脑视频教程,闪传能够实现无线传输,不需

当前讯息:瑞丰银行(601528.SH):达到触发稳定股价措施启动条件

格隆汇3月8日丨瑞丰银行(601528 SH)公布关于触发稳定股价措施的提示性公告,自2023年2月9日起至2023年3月8日,公司股票已连续20个交易日的收盘

即时看!正月十五雪打灯上一句

1、“正月十五雪打灯”上一句是“八月十五云遮月”。2、“八月十五云遮月,正月十五雪打灯”是流传中国广大地区的一句农谚,是中国劳动人民...

环球今头条!浙矿股份:未来破碎筛选设备在矿山行业中的市场空间有望保持稳步增长

同花顺(300033)金融研究中心3月8日讯,有投资者向浙矿股份(300837)提问,请阐述公司破碎筛选设备在金属矿山行业中的市场空间公司回答表示

【全球热闻】vivox60怎么隐藏手机桌面图标_怎么隐藏手机桌面图标

1、首先拿出手机,打开往下拉找到下面,如图1。打开使用时间的屏幕,下拉即可找到。2、点击,如图3,进入后打开,如图4。3

资讯:米兰时装周

1、1967年是“意大利成衣诞生”的重要年份,也是米兰作为世界性的时装之都开始崛起的一年。2、这一年,米兰时装周正式创

猜您喜欢

    Copyright ©  2015-2022 西南服装网版权所有  备案号:皖ICP备2022009963号-8   联系邮箱:39 60 29 14 2@qq.com