docker+es+kibana和springboot中使用es
本次和大家分享的主要是docker搭建es和springboot操作es的内容,也便于工作中或将来使用方便,因此从搭建es环境开始到代码插入信息到es中;主要节点如下:
- elasticsearch启动
- mobz/elasticsearch-head启动
- kibana启动
- 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
启动完后在浏览器浏览 得到如下成功信息:
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
然后在浏览器录入 ,能够看到插件的操作界面,其中包含了索引,数据,基本查询等功能很是方便
为了博客内容充实性,这里我添加了一些日志到es中,通过head工具能够看到如:
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界面也会变成如下
如果es和kibana都正常的话,就能够进入到如下界面
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中看到如下信息:
这里再转到9100端口的mobz/elasticsearch-head界面,也能够看到如下的记录:
推荐阅读
-
Python中@property的理解和使用示例
-
使用Python和xlwt向Excel文件中写入中文的实例
-
详解Linux中PostgreSQL和PostGIS的安装和使用
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
对python中的argv和argc使用详解
-
mantis安装、配置和使用中的问题小结
-
Python中exit、return、sys.exit()等使用实例和区别
-
Word2000和Word2002中的宏在Office Word 2003中的使用
-
MyBatis中XML和注解的对比及使用
-
Linux VPS中rar、unrar命令安装和使用详解