平时我们存储数据用的最多的就是mysql,在前面的文章里我也分享过很多关于mysql的知识,今天我们来集成另外一种数据存储系统ES,它是一款NoSql型数据库,主要使用场景有商品搜索,文章搜索等,关键词就是搜索。 我们先简单介绍下ES。 
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便 
(相关资料图)
这是来自于百度百科的解释,其实我们就直接把它理解成搜索引擎就行了,接下来,我们就开始快速集成,然后上手使用吧! 
本篇介绍的是如何通过docker安装es,提前你得有docker环境 
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;}复制代码 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复制代码这里通过往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 提供的ElasticsearchRepository 只能进行简单的增删改查操作,如果碰到一些稍微复杂的聚合操作,他就很难应付了,所以这里有几个建议: 
如果只需要做简单增删改查操作,直接继承ElasticsearchRepository即可如果项目中有非常复杂的查询或聚合操纵,可以使用结合ElasticsearchRestTemplate做一些复杂的操作,这个包不需要再引用其他依赖,已经集成在spring-data-es里面了。如何利用客户端快速编写ES 语句
这里我要介绍一款软件 kibana,它和es是老组合了,通过它能够直接连接es,直接在页面编写ES语句,值得一提的是它的语法智能提示简直不要太棒了
这个一定要和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
								最炫中国风!中英双语画卷带你看懂中国_全球新要闻
								【环球报资讯】承运人是什么意思
								世界热头条丨大方县气象台继续发布雷电黄色预警信号【Ⅲ/较重】【2023-03-12】
								全球看点:五洋停车:将于2023年4月26日披露2022年年度报告
								山东航空起飞延误1小时,机长:下一段帮我提速 头条焦点
								独家记忆小说赵晓棠_独家记忆小说赵晓棠结局-焦点
								今日密宗很恐怖_密宗佛教好吓人-关注
								国信银行:硅谷银行大跌事件 期限错配引发利率风险
								特工酷女神
								智能家居布线施工图控制系统_智能家居布线施工图
								03月11日00时安徽宿州昨日累计报告阳性感染者确诊423例 怎么判断自己是否属于轻型感染者
								描写大海的句子一年级_描写大海的句子|今亮点
								英国短尾猫多少钱_英国短尾猫
								开迪汽车图片价格表_开迪汽车
								全球要闻:济宁蓼河公园郁金香什么开放?
								逍遥游高中课文原文朗诵_逍遥游高中课文
								华谊腾讯娱乐(00419.HK)早盘温和活跃,升约5%
								环球微动态丨电信宽带查询余额(电信宽带查询)
								条款摆乌龙?这家公司中标2.5亿元项目,招标人却拒签协议,还要二次招标
								工资与薪水区别_工资与薪资一样吗 具体有什么区别_天天快报
								当前通讯!03月10日00时湖南岳阳疫情数据 阳了以后为什么会腰疼?应该怎么办?
								【天天热闻】今日联想y460c主板(联想Y460C用着怎么样)
								iPhone7亮黑色是什么材质_iPhone7亮黑色有什么特别-世界热推荐
								秒表怎么读数加减_秒表怎么读数
								[Docker]如何使用Docker部署一个go程序-全球速看料
								电源系统故障致发射失败 日本JAXA将不打捞机体
								环球快看:可以赚qq零钱的软件下载_可以赚qq零钱的软件
								全球热资讯!《星落凝成糖》4位主角,一个比一个有魅力,你最喜欢谁?
								第一运程 2023年6月1日十二生肖运势解析