| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring集成elasticSearch,搭建、使用、加密 -> 正文阅读 |
|
[Java知识库]Spring集成elasticSearch,搭建、使用、加密 |
目录 简介本人项目中数据量增大,查询性能要求提高,从pgsql升级到es。然而spring集成的过程中遇到了各种版本适配的问题,在这里记录一版奶奶级说明书。 版本的选用以springBoot版本为基准,在项目确定了spring版本之后,pom文件引入spring-data-elasticsearch
刷新maven以后会得到一个自动生成的版本,打开依赖库查看该版本。我的版本是4.2.7 ?然后查看目录下得versions.properties文件,这个是依赖推荐的es版本
可以看到versions.properties推荐的版本是7.12.1。那个这个时候,2件事 1.按照版本引入elasticSearch依赖(版本完全一致)
2.下载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差不多。 唯一要注意的是项目注入的时候要用一个特殊的注解,
因为同级PackageScan和MapperScan都扫不到这个特殊的repository。 RestHighLevelClient查询低版本可能用的是elasticRestTemplate或者不是HighLevel的Client,这个大家可以看看各个版本的demo都是用什么查的,不合适的话在项目运行的时候可能出现版本适配的报错。 在使用RestHighLevelClient做复杂查询的时候,使用的是client.search()的方法 ?这个我不方便贴产品代码,这里贴一个指导贴 如果这个帖子的查询还不够满足要求,可以继续百度QueryBuilders去构建你的复杂查询。 删除常用的就是在定时任务中删除过期的数据
这里的DeleteByQueryRequest类的构建方式和前面的searchRequest的构建是一样的。一般就是配置一下index,查询条件,文件之类的,可以进入client的源码搜索你需要的方法。
安装es各个版本需要配置的东西不一样,比如高版本不用自己配置java环境,但无非就是几点
我列出几点,其他的大家可以百度自己的版本,版本不同我这里写的肯定是不全的(懒),如:安装es7.4.2。 java环境(低版本)修改/bin/elasticsearch/bin目录下elasticsearch配置文件,顶部添加:
配置config以7.12.1为例 进入*/bin/elasticsearch/config目录,编辑elasticsearch.yml文件
各配置项含义: 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 返回
则启动和访问成功 查看数据 curl http://ip:port/_cat/indices/?v
count数和存入数一致可以验证项目的存入情况 有点记得收藏哦 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/30 13:37:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |