springboot集成elk 一: springboot + Elasticsearch

1.ELK介绍

1> Elasticsearch是实时全文搜索和分析引擎,

提供搜集、分析、存储数据三大功能;

是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。

2> Logstash是一个用来搜集、分析、过滤日志的工具。

它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。

它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

3>   Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch

指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据

下载Elasticsearch 、Kibana、Logstash

2.ELK安装

https://www.elastic.co/cn/downloads/

2.1启动Elasticsearch

进入bin目录cd elasticsearch / bin 执行.\elasticsearch

可以修改集群或节点名称。在启动 Elasticsearch 时从命令行完成,

./elasticsearch -Ecluster.name = my_cluster_name -Enode.name = my_node_name

测试:http://localhost:9200/

备注:关闭Elasticsearch 快捷键ctrl+c,然后输入y

2.2 启动kibana

修改配置 config/kibana.yml

进入bin目录 cd kibana\bin 执行kibana

http://localhost:5601

备注:关闭kibana快捷键ctrl+c,然后输入y

3.springboot + Elasticsearch

注意:springboot集成elasticsearch时,版本上必须一致才行

例如 我的springboot使用的时1.5.9版本,因此下载elasticsearch2.0  logstash-2.0.0 kibana4.2.0进行使用才行。

SpringBoot和Elasticsearch 之间对应版本的关系。

Spring Boot Version (x) Spring Data Elasticsearch Version (y) Elasticsearch Version (z)
x <= 1.3.5 y <= 1.3.4 z <= 1.7.2*
x >= 1.4.x 2.0.0 <=y < 5.0.0** 2.0.0 <= z < 5.0.0**

引入依赖:

<dependency>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

添加配置:

##es地址

spring.data.elasticsearch.cluster-nodes = 127.0.0.1:9300

实体类:

@Document(indexName = "test",type = "goods")

//indexName索引名称 可以理解为数据库名 必须为小写 不然会报org.elasticsearch.indices.InvalidIndexNameException异常

//type类型 可以理解为表名

public class GoodsInfo implements Serializable {

    private static final long serialVersionUID = -7682211945335253642L;

    private Long id;

    private String name;

    private String description;

    public Long getId() {

        return id;

    }

    public void setId(Long id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getDescription() {

        return description;

    }

    public void setDescription(String description) {

        this.description = description;

    }

    public GoodsInfo(Long id, String name, String description) {

        this.id = id;

        this.name = name;

        this.description = description;

    }

    public GoodsInfo() {

    }

}

DAO:

创建GoodsRepository,继承ElasticsearchRepository,代码如下:

import com.lolaage.system.model.GoodsInfo;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;

@Component
public interface GoodsDao extends ElasticsearchRepository<GoodsInfo,Long> {
}

最后新建一个controller进行测试,包含简单的增删改查

@RequestMapping("/goods")

@RestController

public class GoodsController {

    @Autowired

    private GoodsDao goodsDao;

    //http://localhost:8888/save

    @GetMapping("/save")

    public String save(){

        GoodsInfo goodsInfo = new GoodsInfo(123l,

                "商品"+123,"这是一个测试商品");

        goodsDao.save(goodsInfo);

        return "success";

    }

    //http://localhost:8888/delete?id=1525415333329

    @GetMapping("/delete")

    public String delete(long id){

        goodsDao.delete(id);

        return "success";

    }

    //http://localhost:8888/update?id=1525417362754&name=修改&description=修改

    @GetMapping("/update")

    public String update(long id,String name,String description){

        GoodsInfo goodsInfo = new GoodsInfo(id,

                name,description);

        goodsDao.save(goodsInfo);

        return "success";

    }

    //http://localhost:8888/getOne?id=1525417362754

    @GetMapping("/getOne")

    public GoodsInfo getOne(long id){

        GoodsInfo goodsInfo = goodsDao.findOne(id);

        return goodsInfo;

    }

    //每页数量

    private Integer PAGESIZE=10;

    //http://localhost:8888/getGoodsList?query=商品

    //http://localhost:8888/getGoodsList?query=商品&pageNumber=1

    //根据关键字"商品"去查询列表,name或者description包含的都查询

    @GetMapping("/getGoodsList")

    public List<GoodsInfo> getList(Integer pageNumber, String query){

        if(pageNumber==null) pageNumber = 0;

        //es搜索默认第一页页码是0

        SearchQuery searchQuery=getEntitySearchQuery(pageNumber,PAGESIZE,query);

        Page<GoodsInfo> goodsPage = goodsDao.search(searchQuery);

        return goodsPage.getContent();

    }

    private SearchQuery getEntitySearchQuery(int pageNumber, int pageSize, String searchContent) {

        FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery()

                .add(QueryBuilders.matchPhraseQuery("name", searchContent),

                        ScoreFunctionBuilders.weightFactorFunction(100))

                .add(QueryBuilders.matchPhraseQuery("description", searchContent),

                        ScoreFunctionBuilders.weightFactorFunction(100))

                //设置权重分 求和模式

                .scoreMode("sum")

                //设置权重分最低分

                .setMinScore(10);

        // 设置分页

        Pageable pageable = new PageRequest(pageNumber, pageSize);

        return new NativeSearchQueryBuilder()

                .withPageable(pageable)

                .withQuery(functionScoreQueryBuilder).build();

    }

}

测试

添加数据:http://localhost:8093/goods/save

查询数据:http://localhost:8093/goods/getOne?id=123

在kibana上进行查看elasticsearch中的数据

根据测试代码中IndexName : test创建一个模式匹配

点击Settings-->Indices->去掉Index contains
time-based events 的勾,

点击Discover

springboot-elk-dmeo.zip

原文地址:https://www.cnblogs.com/brant/p/11680035.html

时间: 2024-08-02 11:41:54

springboot集成elk 一: springboot + Elasticsearch的相关文章

springboot集成elk 三:springboot + Elasticsearch Rest-Client

注:  该集成方式,对Elasticsearch无版本限制,但是需要自行封装请求,解析结果等. <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.3.0</version> </dependency> <dependen

springboot集成elk 四:springboot + Elasticsearch+Jest

依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency> <groupId>io.searchbox</groupId> <artifactId>

springboot集成elk 二:springboot + elk 采集日志

到logstash-2.0.0\bin下新建文件 logstash.conf input { tcp { mode => "server" host => "0.0.0.0" port => 4560 codec => json_lines } } output { elasticsearch { hosts => "localhost:9200" index => "springboot-logst

springboot整合logback集成elk实现日志的汇总、分析、统计和检索功能

在Spring Boot当中,默认使用logback进行log操作.logback支持将日志数据通过提供IP地址.端口号,以Socket的方式远程发送.在Spring Boot中,通常使用logback-spring.xml来进行logback配置. 首先.创建一个elk的springboot项目,然后先对logback进行配置,配置各项的详细说明可以去看http://aub.iteye.com/blog/1101222,说的很详细.也多参考一下别人关于日志的描述https://www.cnbl

SpringBoot电商项目实战 — ElasticSearch接入实现

如今在一些中大型网站中,搜索引擎已是必不可少的内容了.首先我们看看搜索引擎到底是什么呢?搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术.搜索引擎依托于多种技术,如网络爬虫技术.检索排序技术.网页处理技术.大数据处理技术.自然语言处理技术等,为信息检索用户提供快速.高相关性的信息服务.搜索引擎技术的核心模块一般包括爬虫.索引.检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境. image 基于Java的搜索引擎框架,目前市

SpringBoot集成Zipkin实现分布式全链路监控

目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller 发送请求进行测试 Springboot 启动类 运行分析 核心概念 Zipkin 简介 Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency proble

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

spring-boot集成Springfox-Swagger2

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documenta