Spring集成elasticSearch,搭建、使用、加密
目录
简介
版本的选用
spring集成es开发
ElasticsearchRepository
RestHighLevelClient
查询
删除
安装es
java环境(低版本)
配置config
用户启动
权限控制
测试
简介
本人项目中数据量增大,查询性能要求提高,从pgsql升级到es。然而spring集成的过程中遇到了各种版本适配的问题,在这里记录一版奶奶级说明书。
版本的选用
以springBoot版本为基准,在项目确定了spring版本之后,pom文件引入spring-data-elasticsearch
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>
刷新maven以后会得到一个自动生成的版本,打开依赖库查看该版本。我的版本是4.2.7
然后查看目录下得versions.properties文件,这个是依赖推荐的es版本
version.spring-data-elasticsearch=4.2.7
version.elasticsearch-client=7.12.1
可以看到versions.properties推荐的版本是7.12.1。那个这个时候,2件事
1.按照版本引入elasticSearch依赖(版本完全一致)
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.12.1</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.12.1</version></dependency>
2.下载es
es官网下载地址
这两件事的后续分别是,spring集成es开发和搭建es环境。
spring集成es开发
es做CRUD操作的时候,其实和myBatis那一套差不多,就是查起来麻烦一点。
这里需要大家查看自己的es合适的repo。以我的7.12.1为例,官方推荐
ElasticsearchRepository 和 RestHighLevelClient 结合使用。
ElasticsearchRepository
高版本的ElasticsearchRepository弃用了老版本的很多方法,比如search。只剩下了相似查询方法
我们可以用ElasticsearchRepository完成基本的save和delete操作,用RestHighLevelClient完成复杂的查询和指定删除操作。
继承了ElasticsearchRepository以后就可以用save,count等简单方法了,大家可以自己new一个进去看看方法的构建,和Mybatis差不多。
唯一要注意的是项目注入的时候要用一个特殊的注解,
@EnableElasticsearchRepositories(basePackages ="")
因为同级PackageScan和MapperScan都扫不到这个特殊的repository。
RestHighLevelClient
查询
低版本可能用的是elasticRestTemplate或者不是HighLevel的Client,这个大家可以看看各个版本的demo都是用什么查的,不合适的话在项目运行的时候可能出现版本适配的报错。
在使用RestHighLevelClient做复杂查询的时候,使用的是client.search()的方法
这个我不方便贴产品代码,这里贴一个指导贴
searchRequest的构建
如果这个帖子的查询还不够满足要求,可以继续百度QueryBuilders去构建你的复杂查询。
删除
常用的就是在定时任务中删除过期的数据
client.deleteByQuery(deleteByQueryRequest,RequestOptions.DEFAULT)
这里的DeleteByQueryRequest类的构建方式和前面的searchRequest的构建是一样的。一般就是配置一下index,查询条件,文件之类的,可以进入client的源码搜索你需要的方法。
deleteByQueryRrequest.indices("index");deleteByQueryRrequest.setQuery(QueryBuilders.rangeQuery("xxxtime").lt(time));
安装es
各个版本需要配置的东西不一样,比如高版本不用自己配置java环境,但无非就是几点
- jvm的配置
- java环境的配置
- elasticsearch.yml的配置
- bin/elasticsearch本身的配置
- 指定data目录和logs目录
- 配置sysctl
我列出几点,其他的大家可以百度自己的版本,版本不同我这里写的肯定是不全的(懒),如:安装es7.4.2。
java环境(低版本)
修改/bin/elasticsearch/bin目录下elasticsearch配置文件,顶部添加:
#修改/bin/elasticsearch/bin目录下elasticsearch配置文件,添加:#配置JDK11
export JAVA_HOME=/opt/jdk11/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH
#配置JDK判断
if [ -x "$JAVA_HOME/bin/java" ]; thenJAVA="/opt/jdk11/jdk-11.0.1/bin/java"
elseJAVA=`which java`
fi
配置config
以7.12.1为例
进入*/bin/elasticsearch/config目录,编辑elasticsearch.yml文件
cluster.name: CollectorDBClusterpath.data: /opt/elasticsearch/datapath.logs: /opt/elasticsearch/logsnetwork.host: 10.153.61.71http.port: 9200node.name: node-1cluster.initial_master_nodes: ["node-1"]
各配置项含义: cluster.name 集群名称,各节点配成相同的集群名称。 node.name 节点名称,各节点配置不同。 node.master 指示某个节点是否符合成为主节点的条件。 node.data 指示节点是否为数据节点。数据节点包含并管理索引的一部分。 path.data 数据存储目录。 path.logs 日志存储目录。 bootstrap.memory_lock 内存锁定,是否禁用交换。 bootstrap.system_call_filter 系统调用过滤器。 network.host 绑定节点IP。 http.port 端口。 discovery.zen.ping.unicast.hosts 提供其他 Elasticsearch 服务节点的单点广播发现功能。 discovery.zen.minimum_master_nodes 集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。 discovery.zen.ping_timeout 节点在发现过程中的等待时间。 discovery.zen.fd.ping_retries 节点发现重试次数。 http.cors.enabled 是否允许跨源 REST 请求,用于允许head插件访问ES。 http.cors.allow-origin 允许的源地址。
用户启动
es是默认不允许root用户启动的,全部配置完之后创建es用户,把es文件夹的own丢给es用户
chown -R 用户 /文件夹
然后到bin目录启动
先使用./elasticsearch启动看看报文,如果启动没问题,中断进程再使用./elasticsearch -d后台启动。查看es是否在后台运行时命令 ps -ef | grep elasticsearch,注意es有可能启动失败但是进程没有自动关闭,这个时候要先使用kill -9 'PID' 再重新启动。
启动过程中碰到的error都可以复制直接去百度,我遇到的error全都查到了解决方案,没有什么疑难杂症。
权限控制
注意,配置集群和单节点是不一样的。
我参考的是es加密。
测试
本地和远程都是用
curl http://ip:port
返回
{"name" : "node-1","cluster_name" : "lecd-command","cluster_uuid" : "GaOl95PsRP6D7mYhOfu5fg","version" : {"number" : "7.12.1","build_flavor" : "default","build_type" : "tar","build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7","build_date" : "2021-04-20T20:56:39.040728659Z","build_snapshot" : false,"lucene_version" : "8.8.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}
则启动和访问成功
查看数据
curl http://ip:port/_cat/indices/?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open device_gps G3pAh0KrQuC52mhYEICN2w 1 1 3 0 16.4kb 16.4kb
count数和存入数一致可以验证项目的存入情况
有点记得收藏哦
Spring集成elasticSearch,搭建、使用、加密相关推荐
- Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
一:前语 1.项目文档 CSDN 专栏:<Elasticsearch 入门和项目实战> 博客路径: https://blog.csdn.net/a767815662/category_91 ...
- 第 4-8 课:Spring Boot 集成 ElasticSearch
ElasticSearch 是⼀个开源的搜索引擎,建⽴在⼀个全⽂搜索引擎库 Apache Lucene™ 基础之上. Lucene 可以说是当下最先进.⾼性能.全功能的搜索引擎库--⽆论是开源还是私有 ...
- spring boot集成Elasticsearch客户端
spring boot整合Elasticsearch客户端 在spring boot程序应用中集成Elasticsearch客户端,并通过配置对连接进行管理. Elasticsearch的客户端Jav ...
- Spring Boot 集成 Elasticsearch
Elasticsearch (简称ES) 是一个基于 Lucene 的分布式.高扩展.高实时的搜索与数据分析引擎.本章介绍 Spring Boot 应用集成 Elasticsearch ,通过 Spr ...
- 【Spring Boot】21.集成elasticsearch
2019独角兽企业重金招聘Python工程师标准>>> 简介 目前对于检索功能比较有名的服务是我们常见的elasticsearch,所以我们这一节的重点,也是针对elasticsea ...
- Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...
- Spring Boot 集成 ElasticSearch,实现高性能搜索
1.ElasticSearch介绍 Elasticsearch 是java开发的,基于 Lucene 的搜索引擎.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口.Elast ...
- SpringBoot207 - 集成 spring data elasticsearch
扯淡: Spring Data Elasticsearch 是spring data对elasticsearch进行的封装.所以在springboot项目中使用es非常方便,直接在 dao 接口继承 ...
- Lucene 和 Kibana、ElasticSeach、Spring Data ElasticSearch
什么是全文检索 数据分类 生活中的数据总体分为两种:结构化数据和非结构化数据. 结构化数据 - 行数据,可以用二维表结构来逻辑表达实现的数据:指具有固定格式或有限长度的数据,如数据库,元数据等. 非结 ...
最新文章
- 关于数论【康托展开及其逆运算】
- 面试题 flex(二)
- FFmpeg命令行map参数选择音视频流
- 前端学习(2910):vue的介绍
- 实况服务器制作,用Highcharts预处理实时数据及实况图表制作
- 使用Adreno Profiler分析android游戏
- redis并发锁 thinkphp5_资深架构师经典总结:Redis分布式锁实现理解
- 求1-50的偶数和,和奇数和
- 大多数可穿戴设备的基本原理总结
- 理解Rust的所有权
- 视频教程-CCNA趣味实战语音视频课程--企业VoIP组网实验-思科认证
- X79寨板远程启动计算机,X79旗舰主板评测
- 如何将纸质书怎么弄成电子版?如何将纸质文档变成电子文档,下面教你方法
- C++ 打表法计算农历错误数据处理
- ConneR and the A.R.C. Markland-N--- codeforces1293A
- 马克思主义哲学笔记(三)
- Unity Shader之燃烧消散效果
- linux命令 查看分辨率,linux怎样在命令行模式修改屏幕分辨率
- 深度学习中的正则化方法
- 丢手帕问题(约瑟夫问题-数组实现)