
Elastic Stack
文章平均质量分 76
从零到精通,一起学习ES
wu@55555
软考高级系统架构师、Elastic认证工程师、CSDN后端领域博客专家、阿里云专家博主、华为云·云享专家博主、51CTO专家博主、掘金社区认证优秀作者
——致力于家乡互联网技术建设
展开
-
elastic:nested实现对满足条件的数组元素聚合查询
某些业务场景下,我们要对数组元素进行聚合查询,就需要用到nested数据类型,但部分场景是针对数组中指定的元素进行聚合,于是就需要对数组元素进行限定,今天来看看这种场景如何实现。原创 2023-12-18 21:24:23 · 1325 阅读 · 0 评论 -
Elastic:像mybatis-plus一样优雅的书写es客户端代码——Easy-Es
Easy-Es是以elasticsearch官方提供的为基础,而开发的一款针对es的ORM框架,类似于es版的mybatis-plus,可以让开发者无需掌握es复杂的DSL语句,只要会mysql语法即可使用es,快速实现es客户端语法条件构造器上述演示,我们构造查询条件时,使用了EsWrapperseasy-es 条件构造器介绍索引托管如果想要自动根据创建的es实体类来创建对应的索引,那么只需要调整索引的托管模式为非手动模式即可,因为这里我不需要自动同步数据,所以选择非平滑模式。原创 2023-08-06 16:45:52 · 1942 阅读 · 0 评论 -
Elastic:linux设置elasticsearch、kibana开机自启
每次启动服务器都要手动启动es服务,相当之不方便,为此,书写一个脚本,实现es、kibana的开机自启。原创 2023-08-08 08:00:00 · 2765 阅读 · 0 评论 -
mysql进阶:通过canal-admin来管理canal集群
canal-admin的设计初衷就是为了canal提供整体的配置管理、节点运维等功能。针对多节点的情况,不需要相同的配置每个节点都要操作一遍。为运维人员节约时间。集群:也就是一组canal服务端deployer,也称为Server,同一集群的Server的配置文件可以在admin中统一集中管理。也就是说admin是面向多集群的管理。原创 2022-10-07 09:21:29 · 2020 阅读 · 0 评论 -
mysql进阶:canal搭建主从|集群架构
deployer节点同时只会运行一个,而adapter节点是采用服务分发的机制,多节点同时服务,由zk分发请求到具体的adapter节点上执行数据同步任务下期,我们接着讲讲如何结合canal-admin来管理集群节点。原创 2022-10-06 19:07:30 · 3490 阅读 · 0 评论 -
Elastic实战:canal自定义客户端,实现mysql多表同步到es
anal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等canal分成服务端deployer和客户端adapter,我们可以部署多个,同时为了方便管理还提供了一个管理端admin,同时我们还可以自定义客户端,我们讲自定义的客户端称为clientcanal的数据同步流程如下图所示1、新建一个springboot项目,我们结合之前讲解的。原创 2022-10-02 00:11:29 · 5042 阅读 · 2 评论 -
spring data elasticsearch:动态配置实体类索引名称indexName
最近接到一个需要,需要在springdataelasticsearch关联的实体类中动态的根据配置文件动态创建索引名称,比如开发环境下索引名称为user-dev,测试环境下为user-test,生产环境为user-prod一开始接到这个需要觉得很怪,因为不同环境的区分直接搭建不同的es服务器环境不就行了吗,为什么要这么麻烦来处理呢?后来了解到是因为当前项目成本受限,需要隔离开发环境和测试环境用的同一台服务器,于是就产生了这个奇怪的需求。其实想想,不排除某些场景下,就需要动态的创建索引名称。...原创 2022-07-22 21:41:40 · 3036 阅读 · 0 评论 -
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch3.x环境
spring-data系列为众多中间件、数据库的操作提供了极其方便的API,对于elasticsearch也不例外,spring-data-elasticsearch不仅为我们提供了现成的CRUD接口,也提供了简便的各类java client的整合方案所以今天我们就来讲解,如果在springboot项目中整合spring-data-elasticsearch在真正开始搭建之前,我们需要了解我们的运行环境,以防止大家因为环境的问题产生出各类不易排查的错误或冲突首先要知道spring,spring-data-e原创 2022-07-02 19:06:11 · 3405 阅读 · 0 评论 -
spring data elasticsearch:启动项目时自动创建索引
在springboot整合spring data elasticsearch项目中,当索引数量较多,mapping结构较为复杂时,我们常常希望启动项目时能够自动创建索引及mapping,这样就不用再到各个环境中创建索引了所以今天咱们就来看看如何自动创建索引我们已经在实体类中声明了索引数据结构了,只需要识别有注解的实体类,然后调用的和方法即可创建索引及mapping1、因为要调用ElasticsearchRestTemplate,所以要提前声明其bean,这个我们在之前的文章中已经讲解过,有需要的同学可以参考原创 2022-07-02 19:40:10 · 6230 阅读 · 2 评论 -
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch4.2.x环境
我们之间讲解了springboot整合spring data elasticsearch3.x。但elasticsearch的更新十分活跃,截止目前已经到了8.x版本。而spring data elasticsearch3.x所对应的es版本还是6.8.x所以今天我们来讲解与spring-data-elasticsearch3.x有较大变化的spring data elasticsearch4.2.x版本如何整合到springboot一些基础的概念性内容本文就不再重复讲解,不了解的可以查看之前的文章spri原创 2022-07-02 21:41:38 · 2017 阅读 · 0 评论 -
spring data elasticsearch: 设置保活策略|长时间不连接es,报错超时连接
java client长时间没有连接es后,再次调用访问接口,报错连接超时1、因为问题的原因是长时间没有连接导致的,最直接、常见的解决方案就是定期的去调用连接es,以此保证连接不会中断,这样的操作我们称之为2、在的回调函数中提供了一个方法,可以用来设置保活策略3、完整代码:在配置类中声明设置保活策略4、再次启动项目则不会出现连接超时报错............原创 2022-07-02 21:58:44 · 6347 阅读 · 0 评论 -
spring data elasticsearch:复杂查询指南
因为es非关系型数据库的特性,我们常常需要在实际业务中实现复杂查询,从而来查询到我们想要的数据。很多同学刚接触java client不知道如何实现各类复杂查询操作。今天我们就来讲讲一些常见的复杂查询如何实现下文演示基于如下环境开始讲解之前,先声明我们的索引结构,方便大家后续理解我们的案例测试数据,供大家跟练如果不知道springboot如何整合spring-data-elasticsearch的,可以参考我之前的文章从零搭建springboot+spring data elasticsearch4.2原创 2022-07-03 09:45:46 · 2524 阅读 · 2 评论 -
Elastic实战:script painless中求两日期之差
在不少项目统计需求中,我们需要计算周期或者持续时间,这就需要我们计算两个日期之差。所以今天我们就来探讨在es的script脚本中使用painless语法如何计算量日期之差本次演示环境基于elasticsearch7.13.0首先我们来看直接相减会发生什么结果:我们可以看到报错了,原因是类型的数据不能应用减号操作符这里的类型就是es中的日期类型那不能用减号,我们该怎么计算呢?首先要知道的是,我们是在painless语法中进行计算的,painless是类java的语法,回想一下java中是如何计算两原创 2022-06-01 14:41:58 · 2446 阅读 · 0 评论 -
Elastic实战:spring-data-elasticsearch聚合查询指南|spring-data-elasticsearch实现各类聚合
0.引言elasticsearch支持各种类型的聚合查询,给我们做数据统计、数据分析时提供了强大的处理能力,但是作为java开发者,如何在java client中实现这些聚合呢?我们知道spring-data-elasticsearch提供了针对整合spring的es java client,但是在elastic、spring-data官方文档中都没有详细说明聚合查询在java client中如何实现。所以本期,我们的目标就是一篇将这些聚合操作一网打尽!为了更好的将这些聚合讲解清楚,我们结合es官方原创 2022-05-31 14:09:29 · 5841 阅读 · 4 评论 -
ELK搭建(十一):搭建MongoDB运行情况监控平台
0. 引言mongoDB作为基于磁盘的非关系型数据库,JSON格式数据存储方式,具有优秀的查询效率。越来越多的场景使用到了MongoDB。在生产运维中,更需要我们能够实时的掌握mongo的运行情况,以方便我们数据库运行问题做出及时的调整和补救。今天我们就MongoDB运行的实时情况,来搭建一个数据监控平台1. 下载我们的平台是基于elasticsearch+kibana来实现的,也就是我们常说的ELK体系。我们采用Metricbeat插件来采集监控redis的运行数据。当然我们这里为了保证搭建的原创 2022-05-30 22:13:30 · 1033 阅读 · 0 评论 -
Elastic实战:彻底解决spring-data-elasticsearch日期、时间类型数据读取报错问题
0. 引言在使用spring-data-elasticsearch读取es中时间类型的数据时出现了日期转换报错,不少初学者会在这里困惑很久,所以今天我们专门来解读该问题的几种解决方案。1. 问题分析该问题的报错形式一般是:Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2022-03-15T14:31:55+08:00'; nested exception is java.lang原创 2022-05-28 00:36:15 · 6853 阅读 · 1 评论 -
Elastic实战:彻底解决spring-data-elasticsearch查询结果size大于0但显示为空问题
0. 引言我们在使用spring-data-elasticsearch,可能会出现查询结果为null,但返回的数据size是大于0的。或者某一部分字段有值,某一部分字段为null其结果如下图所示,那么这个问题是怎么产生的呢?今天我们就来详细解析1. 问题分析因为我们使用的是spring-data-elasticsearch,在实体类中已经用@Field注解声明了实体类与es索引mapping之间的映射关系,但是从查询结果来看,数据是已经查询出来了,不然size也不会大于0.那么问题就在于实体类原创 2022-05-27 21:54:55 · 2080 阅读 · 0 评论 -
ELK搭建(十):搭建redis运行指标监控平台
0. 引言Redis作为基于内存的非关系型数据库,常常被应用于热点数据缓存,它很大程度上为我们关系性数据库提供了性能补充。保证redis的高可用,对应整个应用程序的运行至关重要,一个直观的监控redis运行情况的数据看板可以为我们实时了解redis运行情况提供极大的便利。话不多说,开始我们今天的监控平台搭建之旅吧1. 下载我们的平台是基于elasticsearch+kibana来实现的,也就是我们常说的ELK体系。我们采用Metricbeat插件来采集监控redis的运行数据。当然我们这里为了保原创 2022-05-16 23:28:34 · 1459 阅读 · 1 评论 -
ELK搭建(九):搭建Docker容器指标监控平台
0. 引言Docker是一款轻量级的应用容器引擎,可以帮助我们快速部署各类软件,自动化构建系列生产环境。因此,我们也需要一个统一的监控页面,来让我们实时了解docker中各个容器的运行情况所以今天,我们的目标就是基于ELK搭建一个docker容器监控平台1. 下载我们的平台是基于elasticsearch+kibana来实现的,也就是我们常说的ELK体系。我们采用Metricbeat插件来采集监控mysql的运行数据。当然我们这里为了保证搭建的便捷性,并没有使用到Logstash,如果大家有需要原创 2022-05-15 23:12:22 · 1532 阅读 · 0 评论 -
ELK搭建(八):搭建PostgreSQL性能、运行效率监控平台
0. 引言PostgreSQL作为一款免费、开源、企业级的关系数据库,被越来越多的企业所青睐,上一章我们讲解了如何搭建一个实时监控PostgreSQL慢日志、错误日志的平台,但是针对PostgreSQL的运行性能还无法监控,生产环境中,特别是构建了数据库集群后,我们常常需要了解到各个数据库的运行情况、性能效率等, 这样才能为我们数据库优化、性能优化提供更有力的保障话不多说,今天我们就来搭建一个PostgreSQL性能、运行效率监控平台1. 下载我们的平台是基于elasticsearch+kiban原创 2022-05-15 21:01:52 · 1521 阅读 · 0 评论 -
ELK搭建(七):搭建PostgreSQL慢查询、错误日志监控平台
PostgreSQL是一款功能非常强大的的关系性数据库,适用于需要执行复杂查询的系统。市面上越来越多的公司开始采用PostgreSQL作为主数据库。今天我们就来讲解如何搭建一个PostgreSQL的慢日志、错误日志监控平台,实时了解到数据库的日志情况,来帮助我们快速排错及优化。原创 2022-05-14 23:53:11 · 1713 阅读 · 0 评论 -
Metricbeat:mysql module之query metricset介绍
0. 引言1. metricset query使用场景2. metricset query使用方法Elastic官网对于mysql query metricset介绍很少,只有一句总结性介绍,对于其用法也没有解释查询指标集允许在MySQL中自定义执行指标相关的查询通过其定义我们可以知道query指标集要求了我们需要额外再声明我们自定义的查询语句。其用法案例如下需要注意的是除了queries属性及其子属性外,不要忘记配置同级的namespace属性- module: mysql metr原创 2022-05-07 23:54:33 · 565 阅读 · 0 评论 -
ELK搭建(六):搭建mysql性能、执行效率监控平台
mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等原创 2022-05-07 02:21:07 · 2133 阅读 · 4 评论 -
Elastic: 常量分数查询constand_score query应用场景
0. 引言最近正好有同学问到constand score查询与其他查询的区别,趁此机会,我们来详细了解下constant score查询1. 定义首先我们先来看官方文档中对constand score查询的介绍可以看到官方解释是:constant score是用来包装filter查询的,其相关性得分等于boost参数值这个解释听起来有些生硬,我们来翻译一下:constant score是组合filter来使用的,也就是说constant score中是不能使用query查询的,我们知道fil原创 2022-05-02 01:30:06 · 361 阅读 · 0 评论 -
Elastic实战: 通过bucket_sort针对聚合后结果实现分页、排序
0. 引言elaticsearch中实现聚合操作十分常见,同时es本身存储的数据量一般都比较大,因此聚合结果数量通常都比较多,所以针对聚合结果进行分页,也是非常常见的需求1. 实现我们可以通过bucket_sort管道聚合来实现分页我们来看看官方文档中的定义中文释义:一个父管道聚合,对其父多桶聚合的桶进行排序。可以指定零个或多个排序字段以及相应的排序顺序。每个桶可以根据它的_key、_count或它的子集合进行排序。此外,可以设置参数from和size,以便截断结果桶。下面我们通过一个例子原创 2022-05-02 01:22:17 · 5461 阅读 · 2 评论 -
Elastic: 常量分数查询constand_score query应用场景
0. 引言1.原创 2022-04-28 00:26:41 · 562 阅读 · 0 评论 -
ELK搭建(五):linux系统日志监控平台搭建
0. 引言现在的生产系统多使用linux系统,在实际生产过程中我们除了需要监控一些业务日志之外,有时也需要监控linux系统本身的日志,来帮助我们进行一些排错和判断。那么这一期,我们就针对linux系统日志监控平台的搭建来进行讲解与往期一样,我们针对实际搭建教程更多是快速搭建为主,不做过多的原理性讲解,这一类讲解我们放到后期单独开几期博客来探讨。1. 下载首先针对elasticsearch,kibana的下载安装不再累述,还不知道的同学可以看看之前的博客。ELK搭建(一):实现分布式微服务日志监控原创 2022-04-07 00:27:23 · 2199 阅读 · 0 评论 -
ELK搭建(四):监控mysql慢查询、错误日志日志
0. 引言因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。那么我们今天就来一步步搭建这样的一个平台2. 下载首先关于ELK的搭建就不再累述了,不清楚的同学可以看看往期博客:ELK搭建(一):实现分布式微服务日志监控因为我的ELK环境是7.13.原创 2022-04-06 01:06:51 · 3585 阅读 · 0 评论 -
ELK搭建(三):监控服务器CPU、网络、磁盘、内存指标
0. 引言本期我们来讲解如何通过ELK+metricbeat来监控服务器/主机中的CPU、网络、磁盘、内存等指标变化。并绘制会数据看板来方便我们实时监控1. 下载首先关于ELK的搭建就不再累述了,不清楚的同学可以看看往期博客:ELK搭建(一):实现分布式微服务日志监控因为我的ELK环境是7.13.0的,所以我们需要下载对应版本的MetricbeatMetricbeat官方下载地址2. 安装Metricbeat以下的安装步骤也可以在kibana中看到:主页>添加数据>系统指标原创 2022-04-05 16:26:14 · 5321 阅读 · 0 评论 -
kibana:运用TSVB编辑器实现时间序列可视化分析
0. 引言前几期我们讲解了利用Kibana Lens来快速部署一套数据看板。这一期我们接着来讲讲kibana提供的TSVB编辑器(Time Series Visual Builder),即时间序列可视化编辑器从名称我们也可以知道,这个编辑器专用于时间序列数据分析的,也就要求我们分析的数据中是必须要带有时间的。1. TSVB简介后续讲解基于以下环境,并且已经在kibana中开启了中文elasticsearch7.13.0kibana7.13.0提前引入kibana提供的测试数据1.1 什么原创 2022-03-31 23:51:30 · 1183 阅读 · 0 评论 -
kibana: Kibana Lens让你更加轻松、直观的构建数据看板(二)图表介绍
0. 引言上期我们讲解了lens的基础使用以及操作栏介绍,本期我们来介绍下lens支持的图表类型。并且通过这些图表搭建一个完整的数据看板。让大家从整体上了解到lens的全貌。1. 图表介绍后续介绍基于以下环境elasticsearch7.13.0kibana7.13.01.1 表表格类型是我们最常见的图表类型,最常见的是在B端产品中。而在看板中展示的表格数据,更多的是统计最近N天的数据,或者排名前N的数据,都会按照一定的排序进行展示在lens中想要创建表格,只需要将需要展示的字段拖拽到中间原创 2022-03-31 00:49:23 · 1816 阅读 · 2 评论 -
Kibana:kibana Lens让你更加轻松、直观的构建数据看板(一)操作栏介绍
0. 引言elastic官方在7.5版本的时候推出了kibana Lens来帮助用户更加简单、直接的创建可视化,上一期我们也简单的示范了利用Len来创建柱状图和折线图。如果不清楚的可以看看上一期文章:ELK搭建:利用kibana创建数据看板那么这一期,我们来详细讲讲Lens的功能布局,让大家对Lens有一个基本的认识1. Lens功能讲解后续操作基于以下环境elasticsearch7.13.0kibana7.13.0kibana中提供的web log测试索引数据,如何导入在上述博客中有介绍原创 2022-03-30 01:45:04 · 2471 阅读 · 0 评论 -
ELK搭建(二):利用kibana创建数据看板
0. 引言上一节我们讲了如何利用ELK搭建分布式微服务日志监控平台,在简单的日志应用场景中,普通的日志查询已经能够满足我们的使用,但是有些场景下,需要我们搭建更加直观的数据展示来显示我们的索引数据。比如说统计出现次数前十的报错内容,或者更具备销售属性的近一年的销售数据趋势图这些需求,都要求我们要搭建一个数据看板来实现,下面我们就来看如何通过kibana来搭建一个数据看板1. 环境elasticsearch7.13.0kibana7.13.02. 数据准备这里为了给大家示例,我们使用官方提供的原创 2022-03-25 22:24:31 · 3104 阅读 · 0 评论 -
【Elastic知识简报】: kibana如何开启中文
0. 引言我们在使用kibana,特别是在设置数据看板时如果英文水平不足,常常会有无法准确设置图形、指标的问题,那么如何将kibana设置为中文界面呢1. 解决在kibana6.7之后就开始支持中文了,开启也很简单,只需要在kibana.yml配置文件中添加上如下配置,然后重启kibana即可i18n.locale: "zh-CN"大功告成!...原创 2022-03-25 15:23:33 · 4896 阅读 · 0 评论 -
Elastic:如何查询特殊字符
0 引言使用keyword来查询mapping替换,防止过滤转义原创 2022-03-06 21:18:17 · 12408 阅读 · 0 评论 -
Elastic实战:ik分词器数据库热更新报错:java.sql.SQLNonTransientConnectionException: Could not create connection to
0. 引言最近部署ik分词器数据库热更新报错,特此记录,以供后续参考java.sql.SQLNonTransientConnectionException: Could not create connection to database server.环境mysql8.0es7.13.0mysql驱动器8.0.221. 解决1、检查是否将mysql-connector-java-8.0.22.jar错误的放在plugins目录下了,应该放在plugins/ik路径下2、检查ik源码po原创 2022-01-23 23:08:40 · 1315 阅读 · 0 评论 -
Elastic:IK分词器分词、停用词热更新如何配置(二)基于数据库
0.引言上一期,我们说明了基于API形式的热更新,但是API形式的热更新存在词库的管理不方便,要直接操作磁盘文件,检索页很麻烦;文件的读写没有专门的优化,性能不好;多一次接口调用和网络传输等缺点,因此这期我们来说明直连数据库的方式来实现热更新1. 简介官方github中并没有说明这种方式,所以本身是不支持直连数据库实现热更新的,要实现需要通过修改源码来做到。虽然直连数据库避免了上述的问题,但是存在着不稳定性,因此官方也没有推荐这种方式,生产中采取哪种方式,还要根据实际业务的需求情况而定2. 步骤原创 2022-01-23 22:57:26 · 3910 阅读 · 1 评论 -
Elastic实战:canal同步mysql到es之父子表数据同步|对象型数组同步|nested数组同步
0. 引言最近在做mysql到es的数据同步,涉及到父子表数据同步,特此记录,以供后续参考关于mysql同步到es的操作明细可参考我之前的博客:Elastic实战:通过canal1.1.5实现mysql8.0数据增量/全量同步到elasticsearch7.x1.环境canal 1.1.5elasticsearch7.13mysql 8.02. 基础类型数组同步相关配置实际上在官方文档中都有示例,以下也是基于这些示例来实现的这种方式针对的是数组中的数据为基础类型,比如List,List原创 2022-01-23 02:52:16 · 4748 阅读 · 5 评论 -
Elastic实战:logstash将kafka数据同步到es时,如何将字符串型时间字段转换为时间戳
0. 引言今天群里有同学问如何将字符串型的时间字段转换为long类型的时间戳。特记录下供后续参考。原问题:我接收数据方传过来的数据,其中有个时间类型是字符串类型,格式为:yyyy-MM-dd hh:mm:ss,我需要转成时间戳保存,我按照网上的方法试了好多种都无法成功转换。数据方把数据发到kafka,我用logstash读kafka,经过处理存到es1. 思路看到这个问题,首先的反映过来的是这是一个数据入库前的处理需求,所以很明显我们可以借助es的pipeline来解决这个问题。但核心的问原创 2022-01-20 16:52:26 · 2844 阅读 · 0 评论 -
Elastic实战:通过pipeline实现mysql同步数据到es的数据预处理
0. 引言最近在将公司的一部分mysql数据同步到es中,采用了logstash-input-jdbc实现全量同步,canal实现增量同步,但是还有一个问题就是es中的数据结构需要重新设计,也就导致部分mysql字段需要经过转换,然后同步到es中首先canal是支持自定义客户端的,需要引入如下依赖,这种方式适合数据转换规则比较复杂,具有强定制性的场景,但是考虑到我这里还要做logstash的数据同步,因此需要一个比较通用的方式来实现数据转换处理,因此我用到了es的pipeline来做预处理<de原创 2022-01-16 15:38:42 · 2021 阅读 · 0 评论