Elasticsearch
文章平均质量分 78
桃花惜春风
高级Elasticsearch工程师,搜索架构工程师
展开
-
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 · 3283 阅读 · 0 评论 -
Elasticsearch低级API开发
好久没写博客了,说点题外话,这一年多太忙了,疫情说来就来,本来打算趁机把Elasticsearch认证工程师考了,试试水,无奈真的是没时间去复习。心思全在搭建新系统上了,这是第一个完全自己主导从底层架构设计到应用开发的一套数据中台系统,后续公司产品业务都要集成进来,公司以此做战略转型,领导天天问咋样了咋样了,我不能拖后腿啊。挑战还是很大的,底层有两套搜索引擎服务,还在文本相似性检索上有了技术突破(基于vector计算Cosine similarity)。还是有很多内容可以和大家分享的,后续有时间我会把关..原创 2020-07-27 17:25:19 · 685 阅读 · 0 评论 -
Elasticsearch原理(三):写入流程
这篇文章我们探索Elasticsearch的写入流程,Elasticsearch的写入跟数据库的写入是完全不同的。数据库中的写入只是单纯的写入行,Elasticsearch中的写入则是建立索引文件,可以理解成数据即索引。下面对比分析Elasticsearch与NoSQL数据库区别。 Elasticsearch并不支持事务。实时性Elasticsearch的主要应用场景...原创 2018-08-24 11:05:56 · 26427 阅读 · 6 评论 -
Elasticsearch原理(五):Master机制及脑裂分析
Elasticsearch并不像其他工具那样依赖zookeeper,它自己内部有一套维护集群的体系。本文主要研讨Elasticsearch中Master的选举机制。原创 2018-09-04 20:58:54 · 18279 阅读 · 3 评论 -
Elasticsearch实战(五):外网访问Elasticsearch
很多场景下我们都需要使用外网来访问内网中的Elasticsearch集群,比如AWS或者虚拟机等。本文参考Elasticsearch版本6.3.0AWSaws的话比较简单了,内网对应的都有外网映射,我们需要外网访问的话直接访问外网ip就可以了。不过要注意Elasticsearch配置文件中network.host要配置内网的主机名或ip。虚拟机虚拟机的环境相对复杂一...原创 2018-09-08 09:44:22 · 3406 阅读 · 0 评论 -
Elasticsearch 原理(六):深入了解Elasticsearch存储
本文我们深入了解关于Elasticsearch存储,如我们写入Elasticsearch的数据是如何在节点上存储的。Elasticsearch的路径Elasticsearch主要有以下路径:path.home:运行Elasticsearch进程的用的的home目录,默认为Java系统属性user.dirpath.conf:Elasticsearch的配置文件目录pat...原创 2018-09-05 16:34:59 · 9182 阅读 · 1 评论 -
Elasticsearch案例分析(一):Bulk异常导致Elasticsearch内存泄漏
这周三线上股票板块的Elasticsearch集群发生了很严重的内存泄漏,本身数据量不大的一个集群,占用内存却非常的高,甚至内存占用已经超过了数据总量。最终是通过临时重启解决问题。虽然重启释放掉了内存空间,但问题原因没找到,就意味着还有可能发生。由于这是一个新搭建不久的集群,也是本人迷之自信,直接上6.3.0。就我目前对Elasticsearch的了解和解决方案,各种招数都试了,还是没...原创 2018-09-15 16:38:29 · 7332 阅读 · 0 评论 -
Elasticsearch原理(七):Elasticsearch架构设计
前面在Elasticsearch原理(一):实时架构中已经介绍了关于Elasticsearch的实时部分架构,这片文章主要作为对前面Elasticsearch原理系列文章的补充,从Elasticsearch整体架构设计来深入了解Elasticsearch。性能首先是关于性能问题,前文也提到了Elasticsearch是可以做到近乎实时,这里就不过多介绍了,有兴趣的可以去上一篇实时架...原创 2018-09-06 14:50:18 · 8700 阅读 · 1 评论 -
Elasticsearch干货(九):Elasticsearch崩溃风险
我们在使用Elasticsearch时应该选择性的避免一些可能导致集群变慢甚至崩溃的操作,这是非常必要的。通配符我们在查询时,或多或少可能会用到通配符(比如:*)来进行查询操作。但是一个通配符下对应的往往是非常大的数据集,这种情况下,很容易导致集群变慢。所以我们在使用通配符时一定要注意,通配符下的数据集是否过大。对于分词字段聚合查询我们一定要避免对分词字段的聚合操作,尤其是类似cont...原创 2018-09-25 19:15:11 · 4234 阅读 · 0 评论 -
Elasticsearch干货(三):对于数值类型索引优化
我们在使用Elasticsearch不免会遇到像int、double这种数值类型,Elasticsearch本身也是支持这些类型的,但并不意味着数字就一定要用数值类型,恰恰相反,用keyword有时候性能会更好,包括对数值进行range。博主生产上就出现过对数值类型range非常慢的情况。本文将详细介绍Elasticsearch中关于数值类型的使用和数值类型查询原理与keyword的区别。...原创 2018-09-15 11:48:42 · 7225 阅读 · 0 评论 -
GitChat文章推荐
GitChat上发表的第一篇文章,希望大家多多支持。现在正在着手准备Elasticsearch全系列达人课,从入门到原理深入,篇幅会比较长,写得非常细。跳转链接:Elasticsearch 实战应用系列...原创 2018-10-29 15:18:40 · 948 阅读 · 1 评论 -
Elasticsearch干货(八):Elasticsearch 实战应用系列
本篇文章关于Elasticsearch 实战应用,已经发表在GitChat,跳转链接主要内容包括:集群安装;插件安装;使用索引模版;单机多实例配置;冷热数据分离配置;外网访问 ES 配置;滚动升级集群方案;线上 Reindex 方案;集群监控。适合人群:Elasticsearch 开发人员;集群运维人员;项目初步使用 Elasticsearch 架构师;IT 从...原创 2018-11-05 11:15:21 · 1020 阅读 · 0 评论 -
Elasticsearch 实战应用系列
主要介绍关于 Elasticsearch 实战基础,您将学到从测试环境使用到生产上线的系统实战。本篇文章主要介绍内容如下:集群安装;插件安装;使用索引模版;单机多实例配置;冷热数据分离配置;外网访问 ES 配置;滚动升级集群方案;线上Reindex 方案;集群监控。适合人群:Elasticsearch 开发人员;集群运维人员;项目初步使用 Elasticsearc...原创 2019-03-15 15:41:46 · 753 阅读 · 0 评论 -
深入理解 Elasticsearch 嵌套、聚合、排序
原文地址:深入理解 Elasticsearch 嵌套、聚合、排序由浅入深,一步步实现嵌套+聚合+排序的复杂的检索表达式,并附带 Java 代码示例。读者可以根据实际使用场景,合理组织开发检索表达式。本文的宗旨是让读者减少学习成本,少走弯路(会介绍一些坑)。主要内容嵌套字段介绍nested 关键字与 field 关键字区别如何查询嵌套字段聚合介绍嵌套字段聚合聚合嵌套聚合求和...原创 2019-06-19 08:19:54 · 2612 阅读 · 3 评论 -
Elasticsearch性能优化指南
本场 Chat 将从 4 个层面(系统、集群、索引、API)介绍 Elasticsearch.优化方案,分别包括写入的优化和查询的优化。共包含优化细项 50 余项。总结了与多位大咖的交流经验,在此分享给大家。我会针对优化原理做一些简单的解释,以及利弊权衡。方便读者针对实际的业务场景进行针对性优化。本场 Chat 您将学到:系统层面优化集群层面优化索引层面优化API 层面优化写入优化查...原创 2019-09-18 15:06:40 · 625 阅读 · 0 评论 -
Elasticsearch原理(二):索引存储方式
Elasticsearch是一个建立在全文搜索引擎库Apache Lucene 基础上的分布式搜索引擎,Lucene最早的版本是2000年发布的,距今已经18年,是当今最先进,最高效的全功能开源搜索引擎框架。LuceneLucene中包含了四种基本数据类型,分别是:Index:索引,由很多的Document组成。 Document:由很多的Field组成,是Index和Search的...原创 2018-08-20 20:58:31 · 7194 阅读 · 0 评论 -
Elasticsearch插件(三):stconvert
在Elasticsearch的对于中文的检索,有时候用户会输入繁体字,我们需要匹配对应的简体字,所以就有了stconvert插件。安装版本号要跟Elasticsearch版本对应。手动安装:1.在plugins文件夹中创建stconvert文件夹 mkdir stconvert2.下载安装包:https://github.com/medcl/elas...原创 2018-08-17 17:49:59 · 8392 阅读 · 0 评论 -
logstash-kafka-elasticsearch
本文介绍使用logstash-kafka-elasticsearch组合进行数据交互。首先用logstash进行数据采集,然后数据通过kafka进入elasticsearch。文档版本:kafka_2.11-0.9.0.0logstash-2.2.0elasticsearch-2.2.0下面介绍连接方法:1. 创建配置文件code.confinput {...原创 2016-09-21 01:26:55 · 6108 阅读 · 0 评论 -
kafka-logstash-elasticsearch
本文介绍kafka数据进logstash,经过filter处理后,数据进elasticsearch。文档版本:kafka_2.11-0.9.0.0logstash-2.2.0elasticsearch-2.2.0与一些老版本连接方法有所不同,logstash-2.2.0中已经提供了连接kafka和elasticsearch的插件,无需再进行插件安装。下面介绍连接原创 2016-09-06 23:56:47 · 5771 阅读 · 0 评论 -
es滚动升级版本重启方案
第一步:关闭分片分配PUT _cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "none" }}第二步:停掉某一节点服务sudo systemctl stop elasticsearch.service第三步:下载安装新版本curl -L -O https...原创 2018-08-15 09:54:41 · 3550 阅读 · 0 评论 -
Elasticsearch查询词高亮显示
{"query": {"match_phrase": {"stock": "紫光股份"}},"highlight" : {"fields" : {"stock" : {}}}}自定义高亮标签"keywo原创 2018-08-15 10:12:17 · 2935 阅读 · 1 评论 -
cerebro安装
cerebro是一款es比较好用的开源监控软件,主要是scala写的,修改源码方便。可以通过修改源码屏蔽掉一些像DELETE等危险操作。从而给更多人包括运维人员使用。安装:wget https://github.com/lmenezes/cerebro/releases/download/v0.6.5/cerebro-0.6.5.tgztar zxvf cerebro-0.6....原创 2018-08-15 10:16:28 · 8944 阅读 · 0 评论 -
Elasticsearch原理(一):实时架构
Elasticsearch的核心优势就是近乎实时,为什么说是近乎实时而非真实意义上的实时呢,因为Elasticsearch能够做到准实时,而并不是完全的实时。下面介绍Elasticsearch是如何索引数据的整个流程。先上图:首先,当我们对记录进行修改时,es会把数据同时写到内存缓存区和translog中。而这个时候数据是不能被搜索到的,只有数据形成了segmentFile,才会...原创 2018-08-16 09:24:43 · 6965 阅读 · 6 评论 -
term长度超限制问题
报错:elasticsearch.exceptions.RequestError: TransportError(400, ‘illegal_argument_exception’, ‘Document contains at least one immense term in field=“kg_graph.nodes.properties.briefIntro_text” (whose UT...原创 2018-08-16 10:25:13 · 6352 阅读 · 0 评论 -
Elasticsearch实战(一):单机多实例配置方法
由于elasticsearch分配的内存不超过32G,对于使用128G内存或更高的服务器来说,配置多实例可以保证对资源的充分利用,对于冷数据节点,配置多实例来压缩单个节点的资源也非常有必要。配置方法:1. 配置es存储实例个数,默认为1node.max_local_storage_nodes: 22. 节点名,同一台机器上不同实例使用不同节点名node.name: nod...原创 2018-08-16 10:57:19 · 4142 阅读 · 1 评论 -
Elasticsearch实战(二):使用索引模板template
对于日志索引,很多场景都是按日期每天建一个索引,索引对于索引模版的建立非常重要。模版适用于所有提前约定好mapping并且需要动态创建索引的场景。创建模版示例:PUT _template/server-log ##指定模版名{ "template" : "server*", ##匹配所用索引名server* "settings": {...原创 2018-08-16 11:13:35 · 6384 阅读 · 0 评论 -
Elasticsearch干货(二):index、create、update区别
index、create、update都是可以实现插入功能的,但实现的原理并不相同。原创 2018-08-22 09:54:55 · 18091 阅读 · 5 评论 -
Elasticsearch干货(一):Elasticsearch锁机制(并发控制)
ElasticSearch和数据库一样,在多线程并发访问修改的情况下,会有一个锁机制来控制每次修改的均为最新的文档。大体上主要有乐观锁和悲观锁两类。乐观锁在ElasticSearch通过_version来记录文档的版本,在文档创建时会有一个初始version,默认为1。在对文档进行修改和删除时,version会递增,也可以由用户指定。只有当版本号大于当前版本时,才会修改删除成功,否...原创 2018-08-22 16:31:50 · 7100 阅读 · 2 评论 -
Elasticsearch实战(三):高级搜索(中文+拼音+首字母+简繁转换+补全)
1、中文搜索、英文搜索、中英混搜 如:“紫光股份”,“紫光gufen”2、全拼搜索、首字母搜索、中文+全拼、中文+首字母混搜 如:“ziguanggufen”,“紫光gufen”,“紫光gf”,“zggf”,“ziguanggf”等等组合3、简繁搜索4.关键字开头首先安装pinyin插件、ik插件、stconvert插件。Elasticsearch插件(一):ik分...原创 2018-08-17 15:33:44 · 13073 阅读 · 5 评论 -
Elasticsearch插件(一):ik分词
在Elasticsearch的对于中文的检索,ik效果最好也是使用最火的一款中文分词插件。支持自定义词库和动态修改词库。对于一般情况的的中文检索,ik分词是一个很好的选择。安装版本号要跟Elasticsearch版本对应。手动安装:1.在plugins文件夹中创建ik文件夹 mkdir ik2.下载安装包:https://github.com/med...原创 2018-08-17 16:21:54 · 4088 阅读 · 1 评论 -
Elasticsearch插件(二):pinyin分词
在Elasticsearch的对于中文的检索,有时候用户输入拼音,需要匹配到对应的汉字。pinyin分词效果还是不错的。支持拼音搜音,拼音首字母搜索和组合搜索。大部分使用场景是pinyin分词和ik分词组合使用。安装版本号要跟Elasticsearch版本对应。手动安装:1.在plugins文件夹中创建pinyin文件夹 mkdir pinyin2.下载...原创 2018-08-17 16:40:17 · 4801 阅读 · 0 评论 -
elasticsearch集群部署安装
1.Linux环境部署这里关于linux环境部署不再详细介绍,想了解的可以查看 第一部分。2.导入安装包这里介绍了elasticsearch安装包和一些插件的安装包。安装过jdk的可不用再倒入jdk包。注意:由于安全问题,elasticsearch是无法安装在root用户下的,我们使用非root用户来安装,所以导入时注意安装包的所属用户和权限问题,具体的操作就不原创 2016-09-03 13:26:55 · 3344 阅读 · 0 评论