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 一: springboot + Elasticsearch的更多相关文章
- springboot集成elk 三:springboot + Elasticsearch Rest-Client
注: 该集成方式,对Elasticsearch无版本限制,但是需要自行封装请求,解析结果等. <dependency> <groupId>org.elasticsearch. ...
- springboot 集成 elk 日志收集功能
Lilishop 技术栈 官方公众号 & 开源不易,如有帮助请点Star 介绍 官网:https://pickmall.cn Lilishop 是一款Java开发,基于SpringBoot研发 ...
- 【Elastic-2】SpringBoot整合ELK、SpringBoot写ES
ELK相关TODO 快速开始文档(https://www.cnblogs.com/lbhym/p/15934416.html) SpringBoot整合ELK ELK接入Kafka(待Kafka快速开 ...
- SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源
SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...
- springboot集成elk 四:springboot + Elasticsearch+Jest
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri ...
- springboot集成elk实现分布式日志管理
1.安装elk https://www.cnblogs.com/xuaa/p/10769759.html 2.idea创建springboot项目 File -> New -> Proje ...
- springboot集成elk 二:springboot + elk 采集日志
到logstash-2.0.0\bin下新建文件 logstash.conf input { tcp { mode => "server" host => " ...
- springboot集成Guava缓存
很久没有写博客了,这段时间一直忙于看论文,写论文,简直头大,感觉还是做项目比较舒服,呵呵,闲话不多说,今天学习了下Guava缓存,这跟Redis类似的,但是适用的场景不一样,学习下吧.今天我们主要是s ...
- SpringBoot图文教程14—SpringBoot集成EasyExcel「上」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
随机推荐
- PHP全栈学习笔记20
thinkphp概述,thinkphp项目构建流程,thinkphp项目结构,thinkphp配置,thinkphp控制器,thinkphp模型,thinkphp视图,thinkphp的内置模板引擎. ...
- mysql中Numeric类型和int类型的区别
首先记一下,Numeric数字数据只包含 数字.数字数据包括正数.负数.小数.分数和整数 例子如下: Numeric(6,2) Numeric(16,6) Numeric(16,0) 从左到右,第一个 ...
- (转)hadoop balancer(重新平衡)
借鉴:https://blog.csdn.net/mnasd/article/details/80369603?utm_source=blogxgwz2 参考文档: http://blog.csdn ...
- Hadoop(3)如何构建HDFS--HA,YARN---HA
什么是HA? HA的意思是High Availability高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用. HA方式安装部署才是最 ...
- [CSP-S模拟测试]:跳房子(模拟)
题目描述 跳房子,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子是在$N$个格子上进行的,$CYJ$对游戏进行了改进,该成了跳棋盘,改进后的游戏是在一个$N$行$M$列的棋盘上进行,并 ...
- Centos7 node npm升级版本
安装npm 官网:https://nodejs.org/en/download/ 下载LTS Linux Binaries (x64)版本. # tar xf node-v10.16.3-linux- ...
- Alpha项目冲刺! Day6-产出
各个成员今日完成的任务 林恩:任务分工,博客撰写,了解安卓环境搭建 杨长元:安卓本地数据库 李震:了解聊天类app相关内容 胡彤:完善服务端 寇永明:研究测试代码 王浩:研究测试代码 李杰:研究测试代 ...
- git补充(关于pull request)转自知乎
当你想更正别人仓库里的错误时,要走一个流程: 1先 fork 别人的仓库,相当于拷贝一份,不会有人直接让你修改原仓库的 2.clone 到本地分支,做一些 bug fix 3.发起 pull requ ...
- Hvie SQL 修改表名 注释 列名注释
一.修改hive表注释 ALTER TABLE 数据库名.表名 SET TBLPROPERTIES('comment' = '新的表备注'); 二.修改hive表字段注释 ALTER TABLE 数据 ...
- 超详细Qt5.9.5移植攻略
本文就来介绍下如何将Qt5.9.5移植到ARM开发板上. 以imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境. 准备工作 1.主机环境:Ubuntu14.04: 开发板:启扬IAC-I ...