欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

docker+es+kibana和springboot中使用es

程序员文章站 2022-05-26 20:51:04
本次和大家分享的主要是docker搭建es和springboot操作es的内容,也便于工作中或将来使用方便,因此从搭建es环境开始到代码插入信息到es中;主要节点如下: 1.elasticsearch启动 我本机环境是windows10,要挂载es的配置文件需要在本机上创建配置文件,因此这里创建配置 ......

本次和大家分享的主要是docker搭建es和springboot操作es的内容,也便于工作中或将来使用方便,因此从搭建es环境开始到代码插入信息到es中;主要节点如下:

  1. elasticsearch启动
  2. mobz/elasticsearch-head启动
  3. kibana启动
  4. springboot操作es

1.elasticsearch启动

  我本机环境是windows10,要挂载es的配置文件需要在本机上创建配置文件,因此这里创建配置文件c:usersadministratoreses-master.yml,配置文件内容如:

 1 #集群名称
 2 cluster.name: "shenniu_elasticsearch"
 3 #本节点名称
 4 node.name: master
 5 #是否master节点
 6 node.master: true
 7 #是否存储数据
 8 node.data: true
 9 #head插件设置
10 http.cors.enabled: true
11 http.cors.allow-origin: "*"
12 http.port: 9200
13 transport.tcp.port: 9300
14 #可以访问的ip
15 network.bind_host: 0.0.0.0

  这里配置一个es的cluster的master节点,集群名称shenniu_elasticsearch,有了配置下面就是启动es命令:

1 docker pull elasticsearch
2 docker run -d --name es-master -p 9200:9200 -p 9300:9300 -v c:/users/administrator/es/es-mast
3 er.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch

  启动完后在浏览器浏览  得到如下成功信息:

  docker+es+kibana和springboot中使用es

2.mobz/elasticsearch-head启动

  elasticsearch-head做为es集群状态查看插件工具,用起来还是挺方便的,启动命令如:

1 docker pull mobz/elasticsearch-head
2 docker run -d -p 9100:9100 --name mobz-es mobz/elasticsearch-head

  然后在浏览器录入  ,能够看到插件的操作界面,其中包含了索引,数据,基本查询等功能很是方便

  docker+es+kibana和springboot中使用es

  为了博客内容充实性,这里我添加了一些日志到es中,通过head工具能够看到如:

  docker+es+kibana和springboot中使用es  

3.kibana启动

  kibana是专门针对es内容的一款查看工具,和elasticsearch-head不同的是前者主要是内容显示,通常有elk的组合,这里同样通过docker来启动下

1 docker pull kibana
2 docker run --name kibana -e elasticsearch_url=http://192.168.183.9:9200 -p 5601:5601 -d kibana

  这里需要配置关联的es的地址,否则kibana界面无法正常使用,倘若es停了,kibana界面也会变成如下

  docker+es+kibana和springboot中使用es

  如果es和kibana都正常的话,就能够进入到如下界面

  docker+es+kibana和springboot中使用es

4.springboot操作es

  要说springboot中使用es有很多方式,这里使用的是它集成的包,通过maven添加如下依赖:

1 <!--es-->
2 <dependency>
3      <groupid>org.springframework.boot</groupid>
4      <artifactid>spring-boot-starter-data-elasticsearch</artifactid>
5 </dependency>

  然后需要在配置文件中增加关于es的的相关配置,由于这里采用的是resposity操作es,所以这里需要设置为启动状态:

1 spring:
2   data:
3     elasticsearch:
4       cluster-name: shenniu_elasticsearch
5       cluster-nodes: 192.168.183.9:9300
6       repositories:
7         enabled: true

  cluster-name对应的是上面启动es时集群配置的名称,cluster-nodes对应集群访问的ip和端口;一般往es中存储的都是对象形式,所以这里需要定义一个实体类,这里是 moeslog:

 1 @document(indexname = "eslog")
 2 public class moeslog {
 3     private string message;
 4 
 5     public string getmessage() {
 6         return message;
 7     }
 8 
 9     public void setmessage(string message) {
10         this.message = message;
11     }
12 
13     private string datetime;
14 
15     public string getdatetime() {
16         return datetime;
17     }
18 
19     public void setdatetime(string datetime) {
20         this.datetime = datetime;
21     }
22 
23     @id
24     private string _id;
25 }

  通过注解@document里面的indexname来创建es索引名,然后通过继承elasticsearchrepository来使用里面的增删改查方法,这里创建一个es工厂接口如:

1 @repository
2 public interface iesrepository extends elasticsearchrepository<moeslog, string> {
3 }

  到此基本的配置和底层的工厂接口都完成了,剩下的就是怎么调用和简单的封装了,这里以save方法为例:

 1 @service
 2 public class eslogserviceimpl implements eslogservice {
 3 
 4     @autowired
 5     private iesrepository esrepository;
 6 
 7     @override
 8     public void addeslog(string message) {
 9 
10         executors.newfixedthreadpool(10).submit(new runnable() {
11             @override
12             public void run() {
13                 simpledateformat simpledateformat = new simpledateformat("yyyy-mm-dd't'hh:mm:ss.sssz");
14 
15                 moeslog eslog = new moeslog();
16                 eslog.setmessage(message);
17                 eslog.setdatetime(simpledateformat.format(new date()));
18                 esrepository.save(eslog);
19             }
20         });
21     }
22 
23     @override
24     public <t> void addes(t t) {
25         addeslog(jsonutil.tojson(t));
26     }
27 }

  值得主要的是里面对datetime属性赋值的是一个时间字符串,格式如:yyyy-mm-dd't'hh:mm:ss.sssz,这里匹配es的时间格式,不出意外的运行程序后,能够在kibana中看到如下信息:

  docker+es+kibana和springboot中使用es

  这里再转到9100端口的mobz/elasticsearch-head界面,也能够看到如下的记录:

  docker+es+kibana和springboot中使用es