docker+es+kibana和springboot中使用es

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

本次和大家分享的主要是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,配置文件内容如:

#集群名称
cluster.name: "shenniu_elasticsearch"
#本节点名称
node.name: master
#是否master节点
node.master: true
#是否存储数据
node.data: true
#head插件设置
http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300
#可以访问的ip
network.bind_host: 0.0.0.0

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

docker pull elasticsearch
docker run -d --name es-master -p 9200:9200 -p 9300:9300 -v C:/Users/Administrator/es/es-mast
er.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch

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

image

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

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

然后在浏览器录入 http://192.168.183.9:9100/ ,能够看到插件的操作界面,其中包含了索引,数据,基本查询等功能很是方便
image
为了博客内容充实性,这里我添加了一些日志到es中,通过head工具能够看到如:
image


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

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

这里需要配置关联的es的地址,否则kibana界面无法正常使用,倘若es停了,kibana界面也会变成如下
image
如果es和kibana都正常的话,就能够进入到如下界面
image


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

<!--es-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

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

spring:
  data:
    elasticsearch:
      cluster-name: shenniu_elasticsearch
      cluster-nodes: 192.168.183.9:9300
      repositories:
        enabled: true

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

@Document(indexName = "eslog")
public class MoEsLog {
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    private String dateTime;

    public String getDateTime() {
        return dateTime;
    }

    public void setDateTime(String dateTime) {
        this.dateTime = dateTime;
    }

    @Id
    private String _id;
}

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

@Repository
public interface IEsRepository extends ElasticsearchRepository<MoEsLog, String> {
}

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

@Service
public class EsLogServiceImpl implements EsLogService {

    @Autowired
    private IEsRepository esRepository;

    @Override
    public void addEsLog(String message) {

        Executors.newFixedThreadPool(10).submit(new Runnable() {
            @Override
            public void run() {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

                MoEsLog esLog = new MoEsLog();
                esLog.setMessage(message);
                esLog.setDateTime(simpleDateFormat.format(new Date()));
                esRepository.save(esLog);
            }
        });
    }

    @Override
    public <T> void addEs(T t) {
        addEsLog(JsonUtil.toJson(t));
    }
}

值得主要的是里面对datetime属性赋值的是一个时间字符串,格式如:yyyy-MM-dd'T'HH:mm:ss.SSSZ,这里匹配es的时间格式,不出意外的运行程序后,能够在kibana中看到如下信息:
image
这里再转到9100端口的mobz/elasticsearch-head界面,也能够看到如下的记录:
image

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
26天前
|
Java Docker 索引
Springboot的Container Images,docker加springboot
本文介绍了如何使用Spring Boot的层索引文件和Docker优化Spring Boot应用程序的容器化过程,包括解压缩可执行jar和创建分层Docker映像的方法。
24 9
Springboot的Container Images,docker加springboot
|
22天前
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
53 11
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
容器 Java Spring
Spring框架遇上Docker:传统与现代的碰撞,谁将重塑应用部署的未来?
【8月更文挑战第31天】Spring框架凭借其强大的企业级特性和便捷的开发模式,在Java开发中占据重要地位。Docker作为容器化技术的代表,提供了轻量级、可移植的应用部署解决方案。两者结合,尤其在微服务架构中,能显著提升开发效率、部署速度和环境一致性。
45 0
|
3月前
|
Java Docker 容器
Docker SpringBoot Skywalking 8.1 agent
Docker SpringBoot Skywalking 8.1 agent
48 0
|
3月前
|
Java API Docker
SpringBoot Docker Skywalking agent 不生效
SpringBoot Docker Skywalking agent 不生效
49 0
|
3月前
|
Linux Docker 容器
Docker 安装 Elasticsearch、Kibana
Docker 安装 Elasticsearch、Kibana
34 0
|
3月前
|
Java 数据安全/隐私保护 Docker
SpringBoot Docker 发布到 阿里仓库
SpringBoot Docker 发布到 阿里仓库
40 0

热门文章

最新文章