自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 资源 (4)
  • 收藏
  • 关注

原创 Elasticsearch原理(九):相关性排序算法详解

Elasticsearch中的相关性算法主要还是基于Lucene的相关性算法,Lucene的算法是基于TF-IDF的,但和TF-IDF还是有些区别。那么我们就从TF-IDF开始介绍。TF-IDF定义TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。(来源百度百科)算法核心TF-IDF实

2020-08-20 10:46:15 3089

原创 Elasticsearch原理(八):嵌套结构的实现

我们在使用Elasticsearch的过程中,很多业务场景都会用到关联查询。而目前Elasticsearch支持的关联查询无非就是两种方式,一种使用嵌套(nested)和父子文档。本文主要来聊聊关于nested,Elasticsearch。文章末尾会附上nested和父子文档的差别和使用场景。如果大家有过一些Lucene基础的话,相信都会知道Lucene中是不支持像嵌套这种数据结构的,而E...

2019-10-16 10:08:12 2219

原创 Elasticsearch干货(三):对于数值类型索引优化

我们在使用Elasticsearch不免会遇到像int、double这种数值类型,Elasticsearch本身也是支持这些类型的,但并不意味着数字就一定要用数值类型,恰恰相反,用keyword有时候性能会更好,包括对数值进行range。博主生产上就出现过对数值类型range非常慢的情况。本文将详细介绍Elasticsearch中关于数值类型的使用和数值类型查询原理与keyword的区别。...

2018-09-15 11:48:42 6828

原创 Elasticsearch原理(七):Elasticsearch架构设计

前面在Elasticsearch原理(一):实时架构中已经介绍了关于Elasticsearch的实时部分架构,这片文章主要作为对前面Elasticsearch原理系列文章的补充,从Elasticsearch整体架构设计来深入了解Elasticsearch。性能首先是关于性能问题,前文也提到了Elasticsearch是可以做到近乎实时,这里就不过多介绍了,有兴趣的可以去上一篇实时架...

2018-09-06 14:50:18 8652 1

原创 Elasticsearch 原理(六):深入了解Elasticsearch存储

本文我们深入了解关于Elasticsearch存储,如我们写入Elasticsearch的数据是如何在节点上存储的。Elasticsearch的路径Elasticsearch主要有以下路径:path.home:运行Elasticsearch进程的用的的home目录,默认为Java系统属性user.dirpath.conf:Elasticsearch的配置文件目录pat...

2018-09-05 16:34:59 9075 1

原创 Elasticsearch原理(五):Master机制及脑裂分析

Elasticsearch并不像其他工具那样依赖zookeeper,它自己内部有一套维护集群的体系。本文主要研讨Elasticsearch中Master的选举机制。

2018-09-04 20:58:54 18043 3

原创 Elasticsearch原理(三):写入流程

这篇文章我们探索Elasticsearch的写入流程,Elasticsearch的写入跟数据库的写入是完全不同的。数据库中的写入只是单纯的写入行,Elasticsearch中的写入则是建立索引文件,可以理解成数据即索引。下面对比分析Elasticsearch与NoSQL数据库区别。 Elasticsearch并不支持事务。实时性Elasticsearch的主要应用场景...

2018-08-24 11:05:56 26286 6

原创 Elasticsearch干货(一):Elasticsearch锁机制(并发控制)

ElasticSearch和数据库一样,在多线程并发访问修改的情况下,会有一个锁机制来控制每次修改的均为最新的文档。大体上主要有乐观锁和悲观锁两类。乐观锁在ElasticSearch通过_version来记录文档的版本,在文档创建时会有一个初始version,默认为1。在对文档进行修改和删除时,version会递增,也可以由用户指定。只有当版本号大于当前版本时,才会修改删除成功,否...

2018-08-22 16:31:50 6906 1

原创 Elasticsearch原理(二):索引存储方式

Elasticsearch是一个建立在全文搜索引擎库Apache Lucene 基础上的分布式搜索引擎,Lucene最早的版本是2000年发布的,距今已经18年,是当今最先进,最高效的全功能开源搜索引擎框架。LuceneLucene中包含了四种基本数据类型,分别是:Index:索引,由很多的Document组成。 Document:由很多的Field组成,是Index和Search的...

2018-08-20 20:58:31 7045

原创 Elasticsearch原理(一):实时架构

Elasticsearch的核心优势就是近乎实时,为什么说是近乎实时而非真实意义上的实时呢,因为Elasticsearch能够做到准实时,而并不是完全的实时。下面介绍Elasticsearch是如何索引数据的整个流程。先上图:首先,当我们对记录进行修改时,es会把数据同时写到内存缓存区和translog中。而这个时候数据是不能被搜索到的,只有数据形成了segmentFile,才会...

2018-08-16 09:24:43 6740 6

原创 Elasticsearch源码(二):scroll原理

问题scroll查询指定_doc排序要比不指定sort或者指定某个字段sort要快很多。scroll查询每次依然要进行collect及计算打分,并非是第一次查询之后会缓存命中结果。源码分析首先看一下Elasticsearch的Collector,主要以下几个这里主要介绍一下TopDocsCollector,TopDocsCollector类在收集完文档后,会返回一个TopDocs对象。TopDocs对象是收集后的文档信息按照某种规则有序的存放在TopDocs对象中,该对象是搜索结果的返回值。

2022-04-13 11:19:29 3294

原创 Logstash安装与入门

文章目录课前三分钟安装自动安装手动安装运行第一个Logstash Event总结课前三分钟从本节课开始,我们开始学习本次达人课第二部分,ELK日志系统中非常重要的组件----Logstash。本节课首先将介绍Logstash的安装以及运行第一个Logstash Event。安装分手动安装和自动安装两种方式介绍。安装Logstash从5.x版本开始必须是运行在java8的环境,并且截止6....

2022-01-16 23:08:53 1317

原创 Logstash基础

文章目录课前三分钟基本概念inputfilteroutputCodecs执行机制目录结构配置文件settings配置课前三分钟本节课我们讲解Logstash的工作原理,在深入学习Logstash之前,我们先了解它是怎么工作的,本节课对于初次接触Logstash的同学非常重要,可以让您快速理解Logstash,少走一些弯路。Logstash事件处理管道可以分为有三个阶段:输入→过滤器→输出。输...

2022-01-16 23:08:41 1107

原创 Logstash 配置

文章目录课前三分钟配置文件settings配置课前三分钟配置文件Logstash的配置文件分为两种:settings配置文件,主要是配置Logstash启动相关配置和一些资源上的配置。pipeline配置文件,主要就是我们自行创建的,以.conf结尾的文件,用于配置数据的输入输出。settings配置Logstash主要包含一下几个配置文件:logstash.ymlLog...

2022-01-16 23:08:26 2475

原创 Logstash input插件

文章目录课前三分钟stdin课前三分钟从本节课开始,我们开始学习本次达人课第二部分,ELK日志系统中非常重要的组件----Logstash。在第二节课中,我们已经介绍了对Logstash进行了相关介绍,相信大家已经有过了解了。Logstash主要分为三部分:input、filter和output。本文将介绍Logstash的输入部分----input。Logstash自带的的输入插件有很多中...

2022-01-16 23:07:58 506

原创 Elasticsearch源码(一):增加自定义Setting

我们在使用Elasticsearch过程中可以不能满足于已有的Setting,我们可能需要自定义一些配置,实现非常简单,话不多说,直接上图。

2022-01-07 11:58:11 1110

原创 使用JVisualVM监控远程服务

第一步、找到你的java服务启动脚本,添加如下参数 -Djava.rmi.server.hostname=10.10.xx.xx \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9536 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ip和端口

2021-09-13 16:01:24 713

原创 Filebeat采集日志讲解(二)

文章目录课前三分钟Filebeat输出到kafka集群输出kafka发送到不同topic关于kafka更多配置Filebeat输出到LogstashFilebeat输出到Elasticsearch课前三分钟上节课我们讲述了关于Filebeat采集日志数据的一些基本使用,我们可以自定义输出一些我们想要的信息和格式。本节课我们将继续探讨Filebeat如何配置输出。filebeat的输出主要支持...

2021-03-25 10:14:47 1850

原创 Filebeat工作原理

文章目录课前三分钟Filebeat的机制harvesterinputFilebeat保存文件状态Filebeat检测事件策略Filebeat如何确保至少一次交付?Filebeat如何避免数据重复?Filebeat什么情况会丢数据?总结课前三分钟前面几节课我们讲述了关于Filebeat的一些基本应用和高级配置。本节课我们讲深入探讨Filebeat的原理,了解Filebeat是怎么工作的。了解的原...

2021-03-25 10:13:31 1321

原创 Filebeat采集日志讲解(一)

在ELKF中,Filebeat作为日志采集端,采集日志并发送到kafka。input就是以文件形式存储的log文件,output就是kafka集群。在采集日志中一般情况有以下几点需要注意的:输出内容确定,一般包括时间戳,主机名,日志类型,日志内容,其他的根据业务的实际需求,无用信息可以直接过滤掉;输出格式,一般使用json,需要自己拼成json格式;多路径采集日志配置,同时采集多个服务的...

2021-03-25 10:12:06 5559

原创 第4课:Filebeat高级应用

文章目录课前三分钟课前三分钟

2021-03-25 10:11:21 1503

原创 ELKF+kafka日志系统架构

文章目录我们为什么要搭建日志系统?相关组件介绍FlumeLogstashFileBeatElasticsearchKibanaKafka市场上的几种日志系统架构原有ELK架构引入消息队列架构轻量级的日志采集架构我们为什么要搭建日志系统?日志系统已经成为目前互联网行业的必备项目,用户行为分析,用户画像,包括事件的异常分析,统计分析等等都要依赖于日志。随着大数据的快速发展,近些年来日志被越来越多...

2021-03-25 10:10:22 640

原创 java编程总结(基础篇)

在日常编程中,保证程序的可读性、可维护性,往往比所谓的最优性能更重要。Exception和ErrorException和Error的区别Exception和Error都是继承了Throwable类,java中只有继承Throwable才可以throw和catch。Exception是程序在运行中发生的异常,可以对异常进行捕捉处理。一般不会导致程序终结。Error是非正常情况,一般会导致应用程序无法正常运行,所以也不需要捕获,比如OutOfMemorryError,都是Error的子类。.

2020-12-15 13:21:43 259

原创 创建vue第一个程序hello word!

上一篇介绍了vue的安装以及开发工具vscode的安装,本章介绍如何用vscode来构建vue项目。如果你是按照我得文档安装的,那么你在vscode中的项目结构应该是这个样子滴目录结构介绍├── README.md 项目介绍├── index.html 入口页面├── build 构建脚本目录│ ├── build-server.js 运行本地构建服务器,可以访问构建后的页面│ ├── build.j

2020-08-28 09:58:20 676

原创 Mac OS下安装Vue完整步骤

首先安装brew,已经安装的则跳至下一步/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"这里如果执行报错:Failed to connect to raw.githubusercontent.com port 443: Connection refused原因是https://raw.githubusercontent.com这个域名被国内和谐了.

2020-08-28 09:30:51 1450

原创 springboot缓存介绍与实战

我们在做底层接口开发的时候,在高并发场景下一般都会用到缓存,缓存有很多种方式,具体的本文不再一一介绍,本文仅介绍基于springboot以及springcloud场景下,如何进行本地缓存。添加maven依赖 <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> &

2020-08-06 10:14:24 281

原创 Elasticsearch低级API开发

好久没写博客了,说点题外话,这一年多太忙了,疫情说来就来,本来打算趁机把Elasticsearch认证工程师考了,试试水,无奈真的是没时间去复习。心思全在搭建新系统上了,这是第一个完全自己主导从底层架构设计到应用开发的一套数据中台系统,后续公司产品业务都要集成进来,公司以此做战略转型,领导天天问咋样了咋样了,我不能拖后腿啊。挑战还是很大的,底层有两套搜索引擎服务,还在文本相似性检索上有了技术突破(基于vector计算Cosine similarity)。还是有很多内容可以和大家分享的,后续有时间我会把关..

2020-07-27 17:25:19 651

原创 记录峨眉山两日游(附带徒步登山攻略)

前言作为一个标准的码代码的农民,不是什么旅行达人,写这篇游记也是突发奇想。当时的我正在复习PMP的考试,不知怎么思绪就突然转变到了峨眉山,突然就强烈地想要写下一篇攻略。可能是最近看了《攀登者》,联想到我用了11个小时爬上了2500米的高度(垂直高度2000米),也算是很厉害了,仅此记录一下吧,也给第一次去峨眉山的朋友们留下一个全面的徒步登山攻略。背景坐标北京,时间2019年10月。由于今年是...

2019-12-10 16:54:30 3545

原创 Elasticsearch性能优化指南

本场 Chat 将从 4 个层面(系统、集群、索引、API)介绍 Elasticsearch.优化方案,分别包括写入的优化和查询的优化。共包含优化细项 50 余项。总结了与多位大咖的交流经验,在此分享给大家。我会针对优化原理做一些简单的解释,以及利弊权衡。方便读者针对实际的业务场景进行针对性优化。本场 Chat 您将学到:系统层面优化集群层面优化索引层面优化API 层面优化写入优化查...

2019-09-18 15:06:40 533

原创 Elasticsearch干货(九):queryString中检索词加不加引号?

对于刚接触搜索或者Elasticsearch的小白来说对queryString可能接触的不多,但是对于早期从事搜索的人来说queryString并不会陌生,它可以理解成检索表达式,但并不是elasticsearch的queryDSL,他遵从的是Lucene语法。elasticsearch同样有接口应用于queryString。下面上个例子:{ "from": 0, "size": 100...

2019-08-28 15:47:05 4037

原创 深入理解 Elasticsearch 嵌套、聚合、排序

原文地址:深入理解 Elasticsearch 嵌套、聚合、排序由浅入深,一步步实现嵌套+聚合+排序的复杂的检索表达式,并附带 Java 代码示例。读者可以根据实际使用场景,合理组织开发检索表达式。本文的宗旨是让读者减少学习成本,少走弯路(会介绍一些坑)。主要内容嵌套字段介绍nested 关键字与 field 关键字区别如何查询嵌套字段聚合介绍嵌套字段聚合聚合嵌套聚合求和...

2019-06-19 08:19:54 2534 3

原创 教你如何写Bug:Google Guava源码分析之——Joiner

我们在码砖的过程中,经常会遇到List转字符串、字符串转List这类需求,当然这不仅仅是单纯的转字符串,而是加入了一个连接符。比如:将一个list转换成以","分隔的字符传,这个时候仅仅使用list.toString()是做不到的。初级的猩猩会想到循环list,然后用StringBuilder来拼装字符串,这样最后一般会多一个字符,再切分。大概代码如下: List<String> ...

2019-03-27 10:22:22 1357

原创 Elasticsearch 实战应用系列

主要介绍关于 Elasticsearch 实战基础,您将学到从测试环境使用到生产上线的系统实战。本篇文章主要介绍内容如下:集群安装;插件安装;使用索引模版;单机多实例配置;冷热数据分离配置;外网访问 ES 配置;滚动升级集群方案;线上Reindex 方案;集群监控。适合人群:Elasticsearch 开发人员;集群运维人员;项目初步使用 Elasticsearc...

2019-03-15 15:41:46 722

原创 Canal报错:Could not find first log file name in binary log index file

报错信息: at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102) ~[canal.parse-1.1.0.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql...

2018-12-05 19:55:43 10091 4

原创 如何在JavaBean中使用关键字命名对象

我们在bean中创建变量时,可以回不得已要使用关键字命名对象,因为有时候json转bean时,json中的key是可以以关键字命名的,但bean中是不允许以关键字命名变量。我们可以使用注释修饰关键字变量:import com.alibaba.fastjson.annotation.JSONField;import com.google.gson.annotations.SerializedN...

2018-11-23 11:51:31 2247 2

原创 最全JSON格式字符串、JSON对象、JavaBean之间的相互转换及遍历

本文中的json基于FastJson,并且推荐大家使用。FastJson相比Gson,效率更好一些,对于不是特别复杂的JSON,可以选择。JSON格式字符串与JSON对象字符串 转 JSONJSONObject jsonObject = JSON.parseObject(json_str);或JSONObject jsonObject = JSONObject.parseObje...

2018-11-23 11:43:41 1202

原创 Spark报错(三):Spark task not serializable

原因分析我们在做spark开发是会遇到这个报错:“org.apache.spark.SparkException: Task not serializable”。字面意思就是task没有被序列化。报这个错的原因就是由于我们在map等算子内部使用了外部定义的变量和函数,从而引发Task未序列化问题。常见的操作有map、filter算子中引用的外部变量,但这个变量不能被序列化。其中最普遍的情形是:当...

2018-11-23 11:04:35 5222

原创 日志系统技术选型和架构分析

本篇文章关于日志系统技术选型和架构分析,已经发表在GitChat,跳转链接主要介绍一些现有的比较成熟的日志系统架构,别人的架构再好却不一定适合你,本文将教你如何选择搭建适合自己业务场景的日志系统。本场 Chat 主要介绍内容如下:我们为什么要搭建日志系统?如何进行技术选型?如何选择适合你的系统架构?亿级高并发日志系统架构介绍适合人群:日志系统的工程师大数据架构师ELK开发工程师...

2018-11-09 14:17:04 1095

原创 实战系列gitchat

本篇文章我们主要讲述一些生产上的简单实战场景。主要涉及一些我们常见的一些应用,技术难点不高,但很实用。本篇文章对于Elasticsearch初学者或者接触Elasticsearch不久的学习者来说,可以说是福音,可以让大家很快的上手并使用Elasticsearch。后续也会考虑写一些进阶的干货,包括原理和优化等。这里不讲概念,网上很多,如果对于文中提到的概念有不懂的,可以在读者圈交流。一、...

2018-11-05 11:20:13 176

原创 Elasticsearch干货(八):Elasticsearch 实战应用系列

本篇文章关于Elasticsearch 实战应用,已经发表在GitChat,跳转链接主要内容包括:集群安装;插件安装;使用索引模版;单机多实例配置;冷热数据分离配置;外网访问 ES 配置;滚动升级集群方案;线上 Reindex 方案;集群监控。适合人群:Elasticsearch 开发人员;集群运维人员;项目初步使用 Elasticsearch 架构师;IT 从...

2018-11-05 11:15:21 1002

logstash学习笔记

早期刚接触logstash时记录的学习笔记,今天翻到了就拿出来分享一下,适合初学者,大手子不要下载了。

2018-09-05

kafka学习笔记

早期刚接触kafka时记录的学习笔记,今天偶然翻到了就拿出来分享一下,适合初学者,大手子不要下载了。

2018-09-05

mysql笔记 mysql笔记

mysql笔记 mysql笔记 mysql笔记 mysql笔记 mysql笔记 mysql笔记 mysql笔记 mysql笔记

2018-04-24

MySQL技术内幕 InnoDB存储引擎

MySQL技术内幕 InnoDB存储引擎 第2版MySQL技术内幕 InnoDB存储引擎 第2版

2018-04-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除