【Elasticsearch 检索技术】
文章平均质量分 93
铭毅天下
《一本书讲透 Elasticsearch》作者,Elastic认证专家、Elastic中国官方合作培训讲师、阿里云MVP、Elastic中文社区2018年、2023年杰出贡献者、CSDN2013年、2016年博客征文特等奖得主、博客全网累计阅读1000万+、已带领国内外近200人+通过Elastic认证专家考试。
展开
-
Elasticsearch集群部署详解
1、题记之前应用都是Elasticsearch单节点,随着业务的拓展、数据量的增多,部署分布式Elasticsearch刻不容缓。本文以Elaticsearch2.3.4版本为基础,讲解Elasticsearch三个节点的分布式部署、核心配置的含义以及分布式部署遇到的坑。2、三节点 Elasticsearch 分布式部署。步骤1:配置好主节点Master信息。# ==================原创 2017-06-03 10:55:47 · 24054 阅读 · 11 评论 -
《死磕 Elasticsearch 方法论》:普通程序员高效精进的 10 大狠招!(完整版)
人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到飞跃式的发展。 Elasticsearch 以其开源、分布式、RESTFul API 三大优势,已经成为当下风口中“会飞的猪”。阿里云2018年2月5日已开价50-200W年薪招聘技术人员参与 Elasticsearch、Lucene ...原创 2018-02-08 20:45:36 · 44387 阅读 · 37 评论 -
Elasticsearch聚合后分页深入详解
1、Elasticsearch支持聚合后分页吗,为什么?不支持,看看Elasticsearch员工如何解读。 这个问题,2014年在github上有很长的讨论。究其为什么ES不支持聚合后分页?可概括如下: 1)性能角度——聚合分页会在大量的记录中产生性能问题。 2)正确性角度——聚合的文档计数不准确。 所以奇怪的事情可能会发生,如第二页的第一项具有比第一页的最后一个元素更高的计原创 2018-01-20 11:18:58 · 59935 阅读 · 21 评论 -
Elasticsearch聚合优化 | 聚合速度提升5倍
1、聚合为什么慢?大多数时候对单个字段的聚合查询还是非常快的, 但是当需要同时聚合多个字段时,就可能会产生大量的分组,最终结果就是占用 es 大量内存,从而导致 OOM 的情况发生。 实践应用发现,以下情况都会比较慢: 1)待聚合文档数比较多(千万、亿、十亿甚至更多); 2)聚合条件比较复杂(多重条件聚合); 3)全量聚合(翻页的场景用)。2、聚合优化方案探讨优化方案一原创 2018-02-04 16:27:01 · 35943 阅读 · 18 评论 -
Elasticsearch索引增量统计及定时邮件实现
0、需求随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的累积成为日常需求。 如何以相对简单的图形化效果展示数据的增量呢? 本文给出思路和实现。1、问题分解1.1 ES集群的数据量统计ES自带的命令行统计举例: curl ...原创 2018-03-03 01:14:35 · 6208 阅读 · 2 评论 -
Elasticsearch实战 | 必要的时候,还得空间换时间!
1、应用场景实时数据流通过kafka后,根据业务需求,一部分直接借助kafka-connector入Elasticsearch不同的索引中。 另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。如下图所示: 业务系统的分层结构可分为:接入层、数据处理层、数据存储层、接口层。 那么问题来了? 我们需要基于聚合(数据处理层)的结果实现检索和聚合分析操作,如何实...原创 2018-03-11 12:50:34 · 3423 阅读 · 0 评论 -
Elasticsearch全量数据增量遍历实现原理
0、需求针对凤凰网财经版块的新闻数据和评论数据, 1个索引存储采集凤凰网财经版块的新闻数据;1个索引存储相关的财经数据评论结果。 统计: 1)某条新闻的评论数的多少? 2)某条评论属于哪条新闻? 3)当前已采集数据的所有评论、评论数汇总,按照评论数逆序排序,以便于图形化展示。1、问题分解1.1 数据如何存储,方案选型?方案一:类似需求,1个索引ifeng_index...原创 2018-03-04 16:12:42 · 8132 阅读 · 2 评论 -
Elasticsearch6.2.2 X-Pack部署及使用详解
X-Pack已经开源,预计Elasticsearch6.3版本会全面集成,不再收费。 赶紧体验一下强大的X-pack吧!1、 X-Pack 概览X-Pack 简介 1)利用 X-Pack 拓展可能性。 X-Pack 是集成了多种便捷功能的单个插件 — security、alerting、monitoring、reporting、graph 探索和 machine learning...原创 2018-03-20 21:52:48 · 14958 阅读 · 6 评论 -
Elasticsearch6.X 新类型Join深入详解
0、ES6.X 一对多、多对多的数据该如何存储和实现呢?引出问题: “某头条新闻APP”新闻内容和新闻评论是1对多的关系? 在ES6.X该如何存储、如何进行高效检索、聚合操作呢?相信阅读本文,你就能得到答案!1、ES6.X 新类型Join 产生背景Mysql中多表关联,我们可以通过left join 或者Join等实现;ES5.X版本,借助父子文档实现多...原创 2018-03-31 23:16:32 · 46938 阅读 · 55 评论 -
Elasticsearch实战 | match_phrase搜不出来,怎么办?
1、问题抛出某个词组在Elasitcsearch中的某个document中存在,就一定通过某种匹配方式把它搜出来。 举例: title=公路局正在治理解放大道路面积水问题。输入关键词:道路,能否搜索到这个document呢? 实际应用中可能需要: 1)检索关键词”理解”、”解放”、”道路”、“理解放大”,都能搜出这篇文档。 2)单个的字拆分“治”、“水”太多干扰,不要被检原创 2018-02-03 21:55:15 · 11319 阅读 · 19 评论 -
kafka最常用命令清单
kafka版本:V0.2.10.1 zookeeper版本:V3.4.11 confluent版本:V3.3.0一、confluent相关启动1、启动confluent:./schema-registry-start -daemon ./etc/schema-registry/schema-registry.properties-daemon的目的是为了后台运行,原创 2018-01-10 22:03:43 · 6749 阅读 · 0 评论 -
Elasticsearch5.4.0(head/kibana/logstash)安装部署深入详解
1、ES5.4.0安装包下载地址https://www.elastic.co/downloads/past-releases/elasticsearch-5-4-02、Centos6.7 Elasticsearch5.4.0安装步骤1:解压 -rw-r–r–. 1 root root 33302352 Jun 8 01:28 elasticsearch-5.4.0.tar.gz tar -zxv原创 2017-06-17 09:49:59 · 8583 阅读 · 1 评论 -
干货 | Elasticsearch 集群健康值红色终极解决方案
题记Elasticsearch当清理缓存( echo 3 > /proc/sys/vm/drop_caches )的时候,出现 如下集群健康值:red,红色预警状态,同时部分分片都成为灰色。 查看Elasticsearch启动日志会发现如下: 集群服务超时连接的情况。bserver: timeout notification from cluster service. ...原创 2017-11-04 13:25:04 · 45637 阅读 · 5 评论 -
Elasticsearch深入详解-知识图谱(每周更新)
1、题记Elasticsearch技术已经燃爆到飞的感觉。 为了方便订阅Elasticsearch深入详解的博友们第一时间获取最新经验分享,和大家一起成长,特将本专栏内容制作为Elasticsearch深入详解知识图谱。并承诺【铭毅天下】微信公众号每周不定时推送ES深入研究文章至少一篇。2、Elasticsearch深入详解知识图谱地址Elasticsearch深入详解图谱...原创 2017-08-19 11:13:59 · 27407 阅读 · 3 评论 -
DSL的诞生 | 复杂sql转成Elasticsearch DSL深入详解
源自死磕ElasticsearchQQ群(626036393)中的一个问题: 问题如下:where (position=ES or work=ES or content=ES) and academic=本科 and (city=北京 or city=深圳)怎么构建ES的查询条件?我的问题拆解与实现如下:1、sql语句转成DSL有哪些方法?方案一:借助工具 NLP团体开发的Elasticsearc原创 2017-11-16 22:38:02 · 28114 阅读 · 8 评论 -
实战 | Elasticsearch打造知识库检索系统
题记源自“死磕Elasticsearch”技术群里的讨论问题: ——我想用es做个类似于知识库的东西,所以需要索引一些pdf、word之类的文件,这个你之前有试过吗?能给个方向吗?我的思考如下:1、pdf、Office类的文档如何被ES索引?更确切的说,pdf、Office类文档(word,ppt,excel等)如何导入ES中。 如图所示: 问题转嫁为:如何将Office类文档、PDF文档原创 2017-12-03 19:00:24 · 12401 阅读 · 6 评论 -
干货 |《深入理解Elasticsearch》读书笔记
题记由于之前已经梳理过Elasticsearch基础概念且在项目中实战过Elasticsearch的增删改查、聚类、排序等相关操作,对ES算是有了一定的认知。但是,仍然对于一些底层的原理认知模糊,特买来《深入理解Elasticsearch》过了一遍,将书中一些细节知识点结合官网文档梳理如下。1——4章偏应用,跟着敲一遍代码基本就能理解原理。 5——9章偏理论一些。 第5章 分布式索引架构1、如何原创 2017-11-16 19:31:49 · 20308 阅读 · 8 评论 -
kafka数据同步Elasticsearch深入详解
1、kafka同步到Elasticsearch方式?目前已知常用的方式有四种: 1)logstash_input_kafka插件; 缺点:不稳定(ES中文社区讨论) 2)spark stream同步; 缺点:太庞大 3)kafka connector同步; 4)自写程序读取、解析、写入 本文主要基于kafka connector实现kafka到Elasticsearch全量、增量同原创 2017-12-21 23:21:29 · 29551 阅读 · 2 评论 -
Elasticsearch聚合深入详解——对比Mysql实现
聚合认知前提桶(Buckets)——满足特定条件的文档的集合 指标(Metrics)——对桶内的文档进行统计计算SELECT COUNT(color) FROM table GROUP BY colorCOUNT(color) 相当于指标。 GROUP BY color 相当于桶。一、聚合起步1、创建索引1.1 创建索引DSL实现put c原创 2018-01-12 21:50:54 · 12242 阅读 · 4 评论 -
探究 | Elasticsearch CPU高排查思路
一、可能导致ES CPU高的原因:1、复杂的query查询 举例:我这边出现过200个组合wildcard query导致集群down掉的情况;2、有大量的reindex操作3、ES版本较低二、排查思路2.1、业务场景排查问自己几个问题? - 1)集群中数据类型是怎么样的? - 2)集群中有多少数据? - 3)集群中有多少节点数、分片数? - 4)...原创 2018-04-10 00:16:35 · 25405 阅读 · 1 评论 -
Elasticsearch6.X 去重详解
1、题记Elasticsearch有没有类似mysql的distinct的去重功能呢?1)如何去重计数? 类似mysql: select distinct(count(1)) from my_table; 2)如何获取去重结果。 类似mysql:SELECT DISTINCT name,age FROM users;2、需求1)对ES的检索结果进行去重统计计数。 2)对...原创 2018-04-12 00:04:35 · 18869 阅读 · 10 评论 -
探究 | Elasticsearch如何物理删除给定期限的历史数据?
1、题记想到删除,基础认知是delete,细分为删除文档(document)和删除索引;要删除历史数据,基础认知是:删除了给定条件的数据,用delete_by_query。 实际操作发现: - 删除文档后,磁盘空间并没有立即减少,反而增加了? - 除了定时任务+delete_by_query,有没有更好的方式呢?2、常见的删除操作2.1 删除单个文档DELETE ...原创 2018-04-22 14:49:34 · 16867 阅读 · 3 评论 -
干货 | Elasticsearch Nested类型深入详解
0、概要在Elasticsearch实战场景中,我们或多或少会遇到嵌套文档的组合形式,反映在ES中称为父子文档。父子文档的实现,至少包含以下两种方式:1)父子文档父子文档在5.X版本中通过parent-child父子type实现,即:1个索引对应多个type;6.X+版本已经不再支持一个索引多个type,6.X+的父子索引的实现改成Join。2)Nested嵌套类型本文通过一个例...原创 2018-10-06 13:08:20 · 94112 阅读 · 80 评论 -
探究 | 明明存在,怎么搜索不出来呢?
1、题记题出有因:有位医生朋友在QQ留言,说对于专业词汇,检索不到怎么办?举例:搜索:痉湿暍病 结合了国内的多款分词插件,竟然搜索不到?2、共性认知2.1 为什么需要分词?wildcard模糊匹配不也可以全字段模糊查询,进而得到结果呢?但是,当文档结果集非常大,模糊匹配必然会有性能问题。搜索引擎的为什么能快速检索到自己查询的关键字呢?倒排索引是以O(1)时间复杂度,一招解决问题...原创 2018-12-22 23:23:05 · 15226 阅读 · 4 评论 -
严选 | Elasticsearch中文社区201901错题本
题记马云演讲中曾经提到:很多时候少听成功专家的话。所有的创业者多花点时间学习别人是怎么失败的,因为成功的原因有千千万万,失败的原因就一两个点。创业需要关注别人的失败,而开发实战,别人的错误经验、别人的问题也非常有价值。开发最懊悔的事莫过于:自己费尽脑汁、花费了很长时间解决了问题,原来别人在社区或者别的地方早已经给出了更优化的方案。开发最最懊悔的事莫过于:别人已经给出了方案,但是我们仍然在黑...原创 2019-02-11 22:26:27 · 8080 阅读 · 1 评论 -
严选 | Elasticsearch中文社区201902错题本
题记马云演讲中曾经提到:很多时候少听成功专家的话。所有的创业者多花点时间学习别人是怎么失败的,因为成功的原因有千千万万,失败的原因就一两个点。创业需要关注别人的失败,而开发实战,别人的错误经验、别人的问题也非常有价值。开发最懊悔的事莫过于:自己费尽脑汁、花费了很长时间解决了问题,原来别人在社区或者别的地方早已经给出了更优化的方案。开发最最懊悔的事莫过于:别人已经给出了方案,但是我们仍然在黑...原创 2019-03-01 22:29:43 · 7215 阅读 · 0 评论 -
严选 | Elasticsearch中文社区201903错题本
题记马云演讲中曾经提到:很多时候少听成功专家的话。所有的创业者多花点时间学习别人是怎么失败的,因为成功的原因有千千万万,失败的原因就一两个点。创业需要关注别人的失败,而开发实战,别人的错误经验、别人的问题也非常有价值。开发最懊悔的事莫过于:自己费尽脑汁、花费了很长时间解决了问题,原来别人在社区或者别的地方早已经给出了更优化的方案。开发最最懊悔的事莫过于:别人已经给出了方案,但是我们仍然...原创 2019-03-31 19:49:27 · 8245 阅读 · 0 评论 -
Elastic认证考试,请先看这一篇!
题记Elastic认证考试已经推出一年多,国内已经陆续有不少小伙伴考过。经常有朋友留言,Elastic认证考试,考什么?难度大不大等。其实:官网都已经有更详细、更准确的描述,建议直接读官网。(尤其后续官网可能会有更新)本文仅对官网考点部分进行翻译、提炼、考点难度评定星级。注意:考试时,唯一可参阅官网文档:https://www.elastic.co/guide/index.html1、...原创 2019-07-07 22:25:15 · 27150 阅读 · 22 评论 -
干货 | Logstash Grok数据结构化ETL实战
0、题记日志分析是ELK起家的最核心业务场景之一。如果你正在使用Elastic Stack并且正尝试将自定义Logstash日志映射到Elasticsearch,那么这篇文章适合您。Logstash写入ES之前的中间数据处理过程一般叫做:数据ETL或者数据清洗。本文重点介绍数据清洗环节的非结构数据转化为结构化数据的——Grok实现。1、认知前提老生常谈,夯实基础认知。ELK Stac...原创 2019-07-13 13:15:06 · 7833 阅读 · 4 评论 -
干货 | Logstash自定义正则表达式ETL实战
0、题记本文建立在干货 | Logstash Grok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。有时Logstash没有我们需要的模式。 幸运的是,我们有正则表达式库:Oniguruma。Oniguruma是一个灵活的正则表达式库。 它包含多种语言的不同正则表达式实现的特性。Github地址:https://github.com/kkos/oniguruma1、基...原创 2019-07-19 22:20:24 · 7430 阅读 · 0 评论 -
严选 | Elasticsearch史上最全最常用工具清单
1、题记工欲善其事必先利其器,ELK Stack的学习和实战更是如此,特将工作中用到的“高效”工具分享给大家。希望能借助“工具”提高开发、运维效率!2、工具分类概览2.1 基础类工具1、Head插件1)功能概述:ES集群状态查看、索引数据查看、ES DSL实现(增、删、改、查操作) 比较实用的地方:json串的格式化 2)地址:http://mobz.g...原创 2018-06-10 22:29:26 · 31487 阅读 · 7 评论 -
干货 | 你是不是也有多进程管理的困惑呢?
1、问题引出——多进程应用场景场景一: 将关系型、非关系型数据的数据同步到ES中。 但是数据库中的表有多个, 一种方案是:一个配置文件中 if else 的方式配置多个表; 另外一种方案是:多个配置文件,多个进程并行执行。 如下图所示: 场景二: kafka多个通道的数据借助kafka_connector 或者logstash_input_kafka同步到ES中, 如下图...原创 2018-06-24 16:36:15 · 2246 阅读 · 3 评论 -
抢先 | 支持sql的Elasticsearch6.3全景概览
1、Elasticsearch6.3 特性概览1.1、支持Sq像操作Mysql一样使用Elasticsearch,缩减DSL的学习成本,更多人爱上ES的特性。POST /_xpack/sql?format=txt{ "query": "SELECT * FROM library WHERE release_date < '2000-01-01' "}1.2...原创 2018-06-15 00:21:08 · 6217 阅读 · 0 评论 -
干货 | 吃透Elasticsearch 堆内存
1、什么是堆内存?Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域: - 新生代 ( Young )、 - 老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域 : - Eden、 - From Survivor、 - To Survivor。这样划分的目的是为了使 JVM...原创 2018-04-19 00:05:37 · 23408 阅读 · 6 评论 -
严选 | ELK Stack 选书指南
少废话,直接干货。0、我们为什么要买一本书?书中梳理出更清晰的知识体系书是作者实践总结的干货书的理论基础部分能快速带我入门书的实践部分帮我们提升技能书中知识是网上官网文档/google/stackoverflow/github等都短时间不能找到的资料书是一种工具,帮我们产品、项目开发中遇到问题能快速找到答案 ……1、当我们在都技术书时,我们在读什么?读基础...原创 2018-05-06 15:11:36 · 4293 阅读 · 0 评论 -
实战 | 一步步排查基于业务场景的Elasticsearch难题!
1、题记我们在实际的业务场景中做Elasticsearch开发时,免不了遇到这样、那样的问题。 《死磕Elasticsearch方法论》中,已经告诉大家相关问题的排查方法。 这一节,我们以具体的示例,解决基于业务场景的Elasticsearch难题的方法?2、上问题 请问下es可以在date字段上查询月日吗 下单时间字段类型是date,想查询每年11月11日下单的记录?有什么办...原创 2018-05-20 21:43:32 · 1755 阅读 · 1 评论 -
方法 | Elasticsearch Jest 批量操作bug 根因定位排查
1、背景使用Jest进行批量插入数据的时候,偶尔会出现如下的bug One or more of the items in the Bulk request failed, check BulkResult.getItems() for more information.起初认为是偶发,就把并发数调小,就再没有关注。2、出了事了,才找到根因。当今天调试的时候,把批量...原创 2018-05-25 22:44:55 · 8369 阅读 · 6 评论 -
吃透 | Elasticsearch filter和query的不同
少啰嗦,直接看东西。——罗永浩1、query和filter的本质区别?以下几张图能更好的概括: query关注点:此文档与此查询子句的匹配程度如何?filter关注点:此文档和查询子句匹配吗?2、Query检索细化关注点1)是否包含?确定文档是否应该成为结果的一部分.2)相关度得分多少?除了确定文档是否匹配外,查询子句还计算了表示文档与其他文档相比匹配程度...原创 2018-05-27 13:25:44 · 55215 阅读 · 28 评论 -
干货 | Elasticsearch 布道者Medcl对话携程Wood大叔核心笔记
Elastic Podcast 第二期来啦, 这一次我们来到了位于上海的携程旅行网,携程内部大量运用了 Elasticsearch来进行集中式的运维日志管理和为业务部门提供统一的搜索服务平台, 目前线上总共部署了多达 94 个 Elasticsearch 集群和超过 700 多个 Elasticsearch 节点,每天新增日志 1600 亿条,峰值达到 300 万每秒,存放在 E...原创 2018-05-23 00:25:56 · 3717 阅读 · 0 评论 -
干货 | 知识库全文检索的最佳实践
1、题记这是stackoverflow上一篇精彩的问答。 原文不大好理解,我做了梳理+图解; 原文是ES早期版本,部分写法已不适用,所有DSL我在6.X上进行了重写和验证; 针对原文内容做了扩展。2、知识库全文检索问题抛出重新审视一个停滞不前的项目,并寻求建议,对数千个“旧”文档进行现代化改造,最终期望效果:通过网络访问这些文档。 文档以各种格式...原创 2018-06-07 22:41:13 · 6993 阅读 · 10 评论