IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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,搭建、使用、加密

目录

简介

版本的选用

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环境,但无非就是几点

  1. jvm的配置
  2. java环境的配置
  3. elasticsearch.yml的配置
  4. bin/elasticsearch本身的配置
  5. 指定data目录和logs目录
  6. 配置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" ]; then
        JAVA="/opt/jdk11/jdk-11.0.1/bin/java"
else
        JAVA=`which java`
fi

配置config

以7.12.1为例

进入*/bin/elasticsearch/config目录,编辑elasticsearch.yml文件

cluster.name: CollectorDBCluster

path.data: /opt/elasticsearch/data

path.logs: /opt/elasticsearch/logs

network.host: 10.153.61.71

http.port: 9200

node.name: node-1

cluster.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数和存入数一致可以验证项目的存入情况

有点记得收藏哦

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:01:38  更:2022-10-22 21:03:37 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码