首页 > 聚焦 > > 正文

[ES三周年]如何使用SpringBoot 整合ES|热点评

2023-03-11 09:05:48 来源:腾讯云

引言

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

当前观点:冷帝冰后_冷帝血后

1、《冷帝血后》是由轨迹图图编著的小说,内容讲述:“你到底是谁!”惊恐的声音从貌美女子的嘴里叫了出...

2023-03-15 08:58:27

什么地图显示小区楼号_能显示小区楼号的地图|天天快讯

1、显示楼号的地图是街景地图,进入地图,选择街景模式。2、放大地图可以查看楼号。本文就为大家分享到...

2023-03-15 05:45:52

抢劫罪的定罪与量刑 天天播报

1、《抢劫罪的定罪与量刑》是2001年人民法院出版的图书,作者是张国轩。2、本书对抢劫罪内的每种犯罪,...

2023-03-15 00:54:19

全球今日报丨钠电池的果子,就要熟了

作者:文雨,编辑:小市妹2019年,美国科学家约翰·古迪纳夫、斯坦利·惠廷厄姆和日本科学家吉野彰等三...

2023-03-14 20:58:44

平安养老险厦门分公司温馨提醒:警惕网络陷阱,提高风险意识

近年来,网络诈骗层出不穷,不法分子通过网络、短信、电话等渠道发布商品广告信息,以优惠、低价等方式...

2023-03-14 17:57:15

金相镶嵌机使用方法_金相镶嵌料_天天微资讯

1、有专门的加热器可以溶:掉。2、专业人员本领大呀。以上就是【金相镶嵌机使用方法,金相镶嵌料】相关内容。

2023-03-14 15:55:56

长春市调整2023年体育中考现场测试项目_天天简讯

长春市调整2023年体育中考现场测试项目

2023-03-14 14:24:17

别侥幸!肇事逃逸只留下模糊背影,半个月多月后男子被抓获_每日快讯

电动自行车骑车人撞伤他人后一跑了之,附近的监控探头只拍到了一个模糊人影。就凭这么一个模糊的人影,...

2023-03-14 11:39:34

免费游武隆景区!“玩转大美武隆_赢取千万大奖”正式启动-天天视讯

1、如果你喜欢来一场说走就走的免费旅行,那就快去购买体彩大乐透吧!3月13日,武隆景区联合重庆体育彩票...

2023-03-14 10:01:51

农电服务公司的性质和待遇_农电服务公司

1、农电服务公司的成立与现有供电所的职能相同,只是改了名称和体制。成立农电服务公司后,供电所可能取...

2023-03-14 07:22:25

焦点滚动:危险的健身房:中产避坑必修课

危险的健身房:中产避坑必修课

2023-03-14 01:20:56

杨颖确认参加微博之夜!不用担心,你期待的哥姐都会去!_世界热点评

杨颖确认参加微博之夜!不用担心,不用担心,你期待的姐姐基本都会去,陆续会官宣,那些靠着红毯和造型...

2023-03-13 20:57:17

30万人民币解冻1080万美元? 女子“洋恋爱”险被骗|世界信息

近日,上海市公安局崇明分局堡镇派出所接辖区某银行报警称,杨女士来到银行咨询贷款业务,并要向某账户...

2023-03-13 18:07:18

百度教育被指未经同意自动扣款,投诉人:还选择了不易被察觉的凌晨进行扣费 每日简讯

一年一度国际消费者权益日即将到来,为提振消费信心,推动消费者权益保护协同共治,打造更加安全放心消...

2023-03-13 16:07:37

焦点热议:放假的拼音_放假的拼音及解释

解答:1、节日拼音:fngji。意思是在指定的日期停止工作或学习。2、一放假,我就有空了。我对妈妈的唠叨...

2023-03-13 13:48:40

环球聚焦:醉驾无证驾驶怎样判

一、醉驾无证驾驶怎样判醉驾的判刑标准是:涉嫌危险驾驶罪,应当判处拘役六个月以内。无证驾驶的判刑标...

2023-03-13 11:14:42

“奋斗者”号完成国际首次环大洋洲载人深潜科考任务

新华社三亚3月11日电(记者赵颖全、陈凯姿)11日下午,伴随着汽笛鸣响和人群欢呼,“探索一号”科考船携...

2023-03-13 08:59:56

跟团去香港要准备什么 香港旅游跟团注意事项-环球焦点

1、携带好个人身份证件及信息,如港澳通行证和大陆居民身份证,以备乘车船飞机或查验。注意入港时间,以...

2023-03-13 05:51:58

世界观速讯丨博格巴二进宫尤文出场时间仍为38分钟,将接受进一步体检

尤文图斯将在意甲第26轮对阵桑普多利亚,博格巴因肌肉问题无缘此战,他将接受进一步的身体检查。博格巴...

2023-03-12 22:57:10

天天热消息:林良铭明示留队:我会在大连与兄弟们并肩作战

3月12日,林良铭更新了个人微博,透露自己会继续留在大连人。此前曾一度有传言称林良铭或在冬窗离队。他...

2023-03-12 18:59:04

长宁区“专利超市”正式发布

3月9日,长宁区知识产权局举办2023长宁区知识产权运营服务集聚区系列活动之专利超市发布会暨专利小贷产...

2023-03-12 15:40:02

尹锡悦与日本“历史和解”,美日韩欲抱团合作,东亚局势呈现危险变化!

历史问题一直是插在韩日两国之间的一根刺,也是美国在推动构建美日韩联盟关系时最头疼的问题之一。但是...

2023-03-12 11:39:19

要闻速递:孕妇梦见下雪了是什么意思_孕妇梦见下雪了的意思

欢迎观看本篇文章,小勉来为大家解答以上问题。孕妇梦见下雪了是什么意思,孕妇梦见下雪了的意思很多人...

2023-03-12 07:59:00

万泽股份(000534)92.79万股限售股将于3月13日解禁上市,占总股本0.19%

根据市场公开信息整理,万泽股份(000534)(000534)于3月13日将有92 79万股限售股份解禁上市,为公司股...

2023-03-12 01:25:36

怎么删除最右交友卡_如何将最右已存在的交友卡关闭

1、第一步打开点击进入最右边的App。2、第二步:点击右下角我的选项,然后点击你的头像。3、第三步点击...

2023-03-11 20:49:12

当前讯息:joker_joker什么意思

全球今头条!宝马:2025年之后可能会推出可商用氢燃料电池汽车

我的p s 搭档

[ES三周年]如何使用SpringBoot 整合ES|热点评

泰州人才市场招工网_泰州人才市场 世界聚焦

LOL解说分享十大选手投票,没有Meiko引争议:我恨名额太少-天天播报

剥皮拼音的近义词|聚焦

环球精选!美图装饰软件_疯狂的美工装修助手

奥地利总统:愿推动奥中关系进一步发展

顾开头的英文名字_g开头的英文名

秦始皇到底有没有老婆?他广纳的六国美女,最终去哪了?

黄河流经中国哪几个省_黄河流经我国多少个省份

天天快看:鸡翅怎么烧_鸡翅怎么烧

看点:上网电价_关于上网电价的介绍

热点在线丨美国商业地产危机:富有的房东们也无力支付房贷

环球信息:分贝的符号dba_分贝的符号

新车报讯:EssenzaSCV12成为首辆符合国际汽联Hypercar安全标准的车型_天天滚动

杭州朝阳橡胶有限公司_关于杭州朝阳橡胶有限公司简述

世界通讯!可喜可贺!刘国正再获重用,重返国乒新岗位,刘国梁没看错人

世界简讯:司空见惯的句子造句_用司空见惯的现象造句

南阳人才引进补贴发放时间_世界热点

全球快看点丨西媒头版讽刺姆巴佩 拒绝皇马 巴黎被拜仁双杀连续...

前沿资讯!宝丽迪:购买厦门鹭意100%股权并配套募资不超2.3亿元获深交所审核通过

读后感800字大全10篇免费_读后感800字大全|环球要闻

环球速递!TikTok推出“三叶草计划”,承诺保障欧洲用户数据安全

x 广告
x 广告

Copyright @  2015-2023 京津冀家电网版权所有  备案号: 京ICP备2022022245号-12   联系邮箱:434 922 62 @qq.com