ElasticSearch7.12.1、Kibana7.12.1安装及设置密码,整合springboot2.5.3

ElasticSearch安装

  1. 下载好安装包后,上传到服务器,下载地址:https://www.elastic.co/cn/start
  2. 解压
tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz
  1. 启动es只能普通用户操作,不能用root账户,创建普通用户
# 添加⽤户名
useradd xxx
# 修改密码
passwd xxx
# 切换账户登录
su xxx
  1. es7需要jdk11才行,自己的是jdk8没有关系,es里面自带jdk11,需要把jdk11目录配置到环境变量中es解压后的目录结构
    配置环境变量:
# 打开文件
vim /etc/profile
# 添加环境变量
export ES_JAVA_HOME=/usr/local/elasticsearch-7.12.1/jdk
# 刷新环境变量配置
source /etc/profile
  1. 这里会提示找不到jdk,个人认为是因为切换了用户,没有权限,所以我把es的文件夹权限放出来了
chmod 777 -R /usr/local/elasticsearch-7.12.1
  1. 切换到普通用户下,进入es的bin目录再启动es
# 启动命令
./elasticsearch
# 后台启动
./elasticsearch -d

可以正常启动,但是用浏览器打开访问不到,需要开启远程访问
7. 开启远程访问

vim elasticsearch.yml

在这里插入图片描述
改成如下
在这里插入图片描述
因为我这里不搭建集群,所以我也改了另外两个地方,看自己的情况定
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 因为es启动消耗内存比较大,可以设置一下内存占用,视自己情况而定,config文件夹内
vim jvm.options

在这里插入图片描述
9. bin目录中重新启动

./elasticsearch -d

报如下错误的话,需配置下内存大小
在这里插入图片描述

# 编辑sysctl.conf⽂件
vim /etc/sysctl.conf
#centos7系统添加如下
vm.max_map_count=655360 
#ubuntu系统添加如下
vm.max_map_count=262144 
# 执⾏以下命令⽣效:
sysctl -p
  1. 最后通过ip:9200,可以看到如下页面说明安装成功
    在这里插入图片描述

Kibana安装

  1. 同样先下载,再上传到服务器,一定要注意Kibana版本和ElasticSearch版本要一致
  2. 解压
tar -zxvf kibana-7.12.1-linux-x86_64.tar.gz 
  1. 进入config目录,修改如下配置
 # 开启kibana远程访问
server.host: "0.0.0.0"
#ES服务器地址
elasticsearch.hosts: ["http://localhost:9200"] 
  1. 在kibana的bin目录中启动,注意也要切换到普通用户,这里也可以把kibana文件夹开放一下权限
# 普通启动
./kibana
# 后台启动,其实这里就像我们平常启动jar包一样
nohup ./kibana &
  1. 浏览器输入ip:5601,看到一下页面说明kibana安装成功在这里插入图片描述

设置密码

ElasticSearch设置密码

  1. 先停止es,通过jps命令可以到端口占用情况,再kill -9 杀掉进程,没有jps可以通过ps -ef|grep elasticsearch找到端口号再杀掉进程
  2. 在config目录中,编辑elasticsearch.yml文件,添加如下
xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
  1. 再重新后台启动es
    启动过程会报错,可不管

  2. 可以用命令curl localhost:9200看看es是否已启动,并且是否提示是否需要密码
    在这里插入图片描述

  3. 在bin目录下输入以下命令设置密码

elasticsearch-setup-passwords interactive

在这里插入图片描述
这里需要输入很多遍密码,方便记,可以设置一样的

  1. 再访问es,看到以下需要输入密码的页面则说明设置成功,默认用户名:elastic
    在这里插入图片描述

Kibana设置密码

  1. 通过上述方法停止kibana
  2. 在config目录里修改kibana.yml文件
    在这里插入图片描述
  3. 重新启动kibana,看到如下画面说明密码设置成功

在这里插入图片描述

Spring连接ElasticSearch

spring升级注意

我的springboot版本本来是2.2.3,但是引入elasticSearch依赖的时候是6.8.13的版本,所以我把springboot升级到了2.5.3,从2.2升级到2.5的话有几个地方需要注意

  1. validation已经被默认移除,需要自行添加
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
  1. 跨域配置
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedHeaders("*")
                // 2.2的时候用的这个
                //.allowedOrigins("*")
                // 升级到2.5之后要改成这个,上面的要注释掉
                .allowedOriginPatterns("*")
                .allowedMethods("*");
    }
  1. yml内字符设置
server:
  servlet:
  	# 之前是放在spring下面的,需要改到现在servlet下面
    encoding:
      charset: UTF-8
      enabled: true
      force: true

连接配置

  1. 我用的是RestHighLevelClient,需引入依赖
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.12.1</version>
        </dependency>
  1. 配置RestHighLevelClient连接,因为涉及到测试服和正式服都会用,所以ip地址这些都是配置在yml文件中的
@Configuration
public class RestClientConfig {

    @Value("${elasticsearch.host}")
    private String host;
    @Value("${elasticsearch.username}")
    private String username;
    @Value("${elasticsearch.password}")
    private String password;

    @Bean
    public RestHighLevelClient restHighLevelClientBuilder() {
        String newHost = host;
        HttpHost host = new HttpHost(newHost, 9200, HttpHost.DEFAULT_SCHEME_NAME);
        RestClientBuilder builder = RestClient.builder(host);
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
        builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
        return new RestHighLevelClient(builder);
    }
}
  1. 还有一个坑,我配置好以上之后,启动服务一直在报一个httpclient的错误,很多博客里说是要把httpclient的版本升级到4.5.10,但是我升级了之后,还是报同样的错误,卡了我好长时间,最后在一个博客的评论下面发现别人说的是也要把httpcore的版本更新到4.4.12
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值