ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot 整合 elasticsearch + kibana

2022-07-31 17:33:35  阅读:175  来源: 互联网

标签:springboot data kibana elasticsearch import com log


(1)使用 docker-compose 安装 elasticsearch 和 kibana

version: '3.0'
services:
  elasticsearch:
    image: daocloud.io/library/elasticsearch:6.5.4
    restart: always
    container_name: elasticsearch
    volumes:
      - elasticsearch_config:/usr/share/elasticsearch/config
      - elasticsearch_data:/usr/share/elasticsearch/data
      - elasticsearch_log:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      ES_JAVA_OPTS: -Xms256m -Xmx256m
    networks:
      - mongo_log
  kibana:
    image: daocloud.io/library/kibana:6.5.4
    restart: always
    container_name: kibana
    volumes:
      - kibana_config:/usr/share/kibana/config
    ports:
      - 5601:5601
    environment:
      - elasticsearch_url=http://192.168.17.150:9200 #修改成 elasticsearch 所在服务器的 ip
    depends_on:
      - elasticsearch
    networks:
      - mongo_log
networks:
  mongo_log:
volumes:
  elasticsearch_config:
  elasticsearch_data:
  elasticsearch_log:
  kibana_config:

(2)springboot 项目,引入 elasticsearch 依赖:

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

(3)application.yml 配置文件配置 elasticsearch 配置

spring:
  data:
    elasticsearch:
      #集群名字(和 elasticsearch安装所在服务器的 elasticsearch.yml 配置文件中的集群名字一致)
      cluster-name: mongo-elasticsearch
      #elasticsearch 所在服务器地址,节点端口映射为 9300,不是 9200
      cluster-nodes: 192.168.17.150:9300

(4)接下来使用和普通的数据库 crud 模式一样,创建实体类,dao 层

实体类:

package com.model.esEntity;
import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import javax.persistence.Id;
/**
 * @author Mongo
 * @return
 */
@Document(indexName = "mongo",type = "user")
@Data
public class UserEntity {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String sex;
}

dao 层:

package com.daoEs;
import com.model.esEntity.UserEntity;
import org.springframework.data.repository.CrudRepository;
/**
 * @author Mongo
 * @return
 */
public interface UserDao extends CrudRepository<UserEntity,String> {
    
}

controller 层测试:

package com.controller;
import com.common.result.ResultsBean;
import com.common.utils.*;
import com.daoEs.UserDao;
import com.model.bean.PostParamsBean;
import com.model.esEntity.UserEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

/**
 * @author Mongo
 * @return
 */
@RestController
@Slf4j
public class TestController {
    @Autowired
    UserDao userDao;
    
    @PostMapping("/test/addEsUser")
    public ResultsBean addEsUser(@RequestBody UserEntity userEntity) {
        log.info("==== 开始 es 保存数据 ====");
        UserEntity save = userDao.save(userEntity);
        log.info("==== 结束 es 保存数据 ====");
        return ResultsBean.ok(save);
    }

    @PostMapping("/test/findEsUser")
    public ResultsBean findEsUser(@RequestBody UserEntity userEntity) {
        log.info("==== 开始 es 查询数据 ====");
        String id = userEntity.getId();
        Optional<UserEntity> byId = userDao.findById(id);
        log.info("==== 结束 es 查询数据 ====");
        return ResultsBean.ok(byId);
    }
}

postman 测试:

 

 

  kibana 界面查看:

 

 

====================================

 注意事项:

(1)elasticsearch 安装好后,需要修改配置文件,因为 docker 映射了路径,直接在  /var/lib/docker/volumes 下面的 docker_elasticsearch_config/_data 内修改 elasticsearch.yml 文件:

vi /var/lib/docker/volumes/docker_elasticsearch_config/_data/elasticsearch.yml

 

 

cluster.name: xxxx  #这个参数要和 springboot 项目中的 application.yml 文件中的 es 配置里面的 cluster-name: mongo-elasticsearch 一致!

其他两个配置如图所示,一般到这里就可以正常使用了。

注意:如果启动 es(elasticsearch 简称) 后,springboot 请求接口后报错,提示:

  None of the configured nodes are available: [{#transport#-1}{GMeURoP8SfSHo9z-SuSHFg}{192.168.17.150}{192.168.17.150:9200}]

解决方法:

  1、类似这样的错误,记得 docker-compose.yml 文件中,9300 端口要写上映射,不写会报这个错,

  2、es 中的 elasticsearch.yml 文件中的 cluster.name 要和 springboot  application.yml 文件中的 cluster-name 一致

  3、查看 docker-compose logs -f 日志,看到提示:java.lang.IllegalStateException: Received message from unsupported version: [5.2.2] minimal compatible version is: [5.6.0],这种问题就是 maven 依赖 jar 包版本的问题,尝试更换 maven: spring-boot-starter-data-elasticsearch 依赖的版本,也可以解决问题

标签:springboot,data,kibana,elasticsearch,import,com,log
来源: https://www.cnblogs.com/xuehuashanghe/p/16537595.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有