[ES三周年]如何使用SpringBoot 整合ES-世界微头条 - 科技金融 -

当前位置:首页  >  科技金融  > 正文

[ES三周年]如何使用SpringBoot 整合ES-世界微头条

[ES三周年]如何使用SpringBoot 整合ES-世界微头条
2023-03-12 23:03:49 来源:腾讯云

引言

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

标签:

(责任编辑:news01)
视频调色软件DaVinci Resolve 18.1.4发布 环球实时

视频调色软件DaVinci Resolve 18.1.4发布 环球实时

IT之家3月6日消息,BlackmagicDesign今天发布了DaVinciResolve18 1
03-06 20:03:04
妻子出轨了婚姻还能继续吗_妻子出轨了 滚动

妻子出轨了婚姻还能继续吗_妻子出轨了 滚动

1、当老婆出轨,老婆有外遇,被老婆戴绿帽子,很多男人都不愿意直视这件事,选择逃避。我能理解咨询师此...
03-06 17:58:23
小火车托马斯全集 全球观热点

小火车托马斯全集 全球观热点

1、《托马斯与小火车们》是一款儿童类网页游戏。本文到此结束,希望对大家有所帮助。
03-06 17:56:26
酬乐天扬州初逢席上见赠刘禹锡

酬乐天扬州初逢席上见赠刘禹锡

酬乐天扬州初逢席上见赠百科名片  《酬乐天扬州初逢席上见赠》是唐代刘禹锡的七言律诗。唐敬宗宝历二...
03-06 16:01:04
建厂 实时焦点

建厂 实时焦点

1、建厂。2、就是兴建工厂的简称。本文到此结束,希望对大家有所帮助。
03-06 14:56:08
天邑股份:FTTR有可能在今年开启规模商用元年

天邑股份:FTTR有可能在今年开启规模商用元年

3月6日,天邑股份在披露的调研纪要中表示,FTTR(FibertoTheRoom,指光纤敷设到远端节点,为光纤接入的基...
03-06 13:40:28
太仓有哪几所高中_环球热门

太仓有哪几所高中_环球热门

1、江苏省太仓高级中学:一所全日制高级中学,位于太仓市城厢镇,学校于1995年7月落成并开始独立招生,...
03-06 11:35:00
同上一堂课手机上怎么看直播回放?

同上一堂课手机上怎么看直播回放?

1 下载长安书院app从手机应用商城中下载长安书院App,或扫描下方二维码下载,安装完成后打开。在首页进...
03-06 11:18:11
家门口的幸福感~观山湖区这家社区食堂开业啦

家门口的幸福感~观山湖区这家社区食堂开业啦

00:33“今天部分菜品免费品尝,欢迎欢迎……”3月3日上午11点,观山湖区金华园街道御墅社区居民楼下,围满了社
03-06 10:01:41
遨游浏览器2|世界快资讯

遨游浏览器2|世界快资讯

1、傲游浏览器2 x(MaxthonBrowser)是一款功能丰富的多标签浏览器,傲游2 x基于IE内核开发,这意味着
03-06 08:22:36
广州市越秀区区号电话_广州市越秀区座机区号

广州市越秀区区号电话_广州市越秀区座机区号

1、越秀区区号:020越秀区,广州市市辖区,位于广东省中部。2、东起广州大道,与天河区接壤;南临珠江,...
03-06 06:50:26
教育部托福报名网站_教育部托福报名官网

教育部托福报名网站_教育部托福报名官网

1、你要不停刷新。2、它是这样的。本文到此分享完毕,希望对大家有所帮助。
03-06 04:41:00
多囊卵巢综合征_女性多囊卵巢综合征能治愈吗 天天滚动

多囊卵巢综合征_女性多囊卵巢综合征能治愈吗 天天滚动

1、女性的多囊卵巢综合征是无法治愈的,因为它是一种终身内分泌激素疾病。2、最大的问题是会影响生殖健...
03-06 01:01:10
世界快看:东莞海月岩

世界快看:东莞海月岩

1、 "[] "。本文到此结束,希望对大家有所帮助。
03-05 21:27:48
每日热文:6000 万美元!卡塔尔宣布向最不发达国家捐款!这三国将脱离最不发达国家行列

每日热文:6000 万美元!卡塔尔宣布向最不发达国家捐款!这三国将脱离最不发达国家行列

据央视新闻,当地时间3月5日,第五次联合国最不发达国家问题会议在卡塔尔首都多哈开幕。卡塔尔埃米尔(...
03-05 20:13:24
环球热门:向日葵什么时候开花时间是几点

环球热门:向日葵什么时候开花时间是几点

向日葵在中午12:00开放。就是太阳最猛的时候。也是太阳最旺盛的时候。之所以向日葵在中午12:00开放,因...
03-05 18:04:04
一边充电,一边逛街!特斯拉充电商圈即将形成!

一边充电,一边逛街!特斯拉充电商圈即将形成!

电动汽车用户的痛点是什么?相信很多开过一段时间电动汽车的朋友都知道,那就是充电耗费时间太长。即便...
03-05 16:56:19
分解质因数计算器_分解质因数

分解质因数计算器_分解质因数

1、1、答:一个正数除了1和它本身外,不再有其他因数,这样的正整数叫质数,而质数作为因数时,就叫质因...
03-05 14:43:46
突破与自由,民族服装定制品牌隆庆祥2023春夏大秀开启 世界速讯

突破与自由,民族服装定制品牌隆庆祥2023春夏大秀开启 世界速讯

本文转自:人民网-山东频道3月4日,民族服装定制品牌隆庆祥2023春夏大秀在青岛开启。隆庆祥供图人民网青...
03-05 13:52:59
当前看点!美国退休年龄是多少岁

当前看点!美国退休年龄是多少岁

1、美国政府没有硬性规定的统一退休年龄,工薪族往往依照自己的身体和财务状况作出选择,可以选择提前退...
03-05 11:38:58
焦点热文:成都青羊:千名师生多地传唱学习雷锋系列歌曲

焦点热文:成都青羊:千名师生多地传唱学习雷锋系列歌曲

“学习雷锋好榜样,忠于革命忠于党……”今年是全国第60个学习雷锋纪念日,3月3日,由成都市青羊区教育...
03-05 10:05:36
猩球崛起2结局是什么

猩球崛起2结局是什么

《猩球崛起2》结局是凯撒带着猩猩去了红杉公园,最后他会说话了,对男主角说了句凯撒回家了,另一边,男...
03-05 08:27:14
新兵义务清理水道 助力春耕生产

新兵义务清理水道 助力春耕生产

00:413月3日,浏阳市古港镇沔江村,190多名春季入伍新兵开展学雷锋志愿服务实践活动。新兵们拿着镰刀、...
03-04 18:00:29
2021年元旦高速公路免费吗 焦点快播

2021年元旦高速公路免费吗 焦点快播

1、元旦假期的高速公路一般是不免费的。2、高速公路免费通行只在春节、清明节、劳动节、国庆节四个节日...
03-04 15:40:03
凌豹姿伍昌联_凌豹姿

凌豹姿伍昌联_凌豹姿

1、凌豹姿全部系列和单行本含新书。2、男儿当自强系列五《情逢恶医》(1月17日出版)91本小说和目录发至...
03-04 12:12:23
美商务部又对20多个中国实体实施出口限制,外交部:中方坚决反对

美商务部又对20多个中国实体实施出口限制,外交部:中方坚决反对

环视频 制作徐童【环球时报-环球网报道记者乌元春】据《华尔街日报》报道,美国商务部当地时间2日针对...
03-04 11:31:21
珠海长隆海洋王国类型及适用对象|全球聚看点

珠海长隆海洋王国类型及适用对象|全球聚看点

珠海长隆海洋王国类型及适用对象【年卡类型】黄金年卡、黄金快乐卡、铂金年卡、铂金快乐卡【适用对象】...
03-04 07:41:06
一个口一个当念什么?_一个口一个当念什么 全球快消息

一个口一个当念什么?_一个口一个当念什么 全球快消息

1、1、答:噹字。2、2、噹字读音dang,声调第一声。3、3、噹字是一个左右结构的字,由左边的口字旁和右...
03-02 17:36:47
((佛本是道))  第二十五章 玉虚昆仑  一部融合三海经西游记和现代情节的玄幻小说

((佛本是道)) 第二十五章 玉虚昆仑 一部融合三海经西游记和现代情节的玄幻小说

第二十五章玉虚昆仑“这么看来,我的第二元神说来也是妖怪,应该可以修炼啊!这些日子都是让它自己进化...
03-02 16:10:28
国际大赛连遭辱,樊振东乒超完虐马龙过把复仇瘾,还需正名战

国际大赛连遭辱,樊振东乒超完虐马龙过把复仇瘾,还需正名战

马龙作为国乒队长,最近几年可谓是飞黄腾达,世界大赛几乎碾压式的统治,世锦赛、世界杯、奥运会以及巡...
03-02 11:13:44

为您推荐

精彩推送