随笔分类 - elasticsearch
摘要:1.背景描述 es在本公司承载三个部分的业务,站内查询,订单数据统计,elk日志分析。 2020年团队决定对elasticsearch升级。es(elasticsearch缩写,下同)当前版本为1.x,升级到5.x版本。 5.x支持如下新特性: 支持lucene 6.x,磁盘空间少一半,索引时间少一
阅读全文
摘要:1.一般建议 a.不要返回过大的结果集。这个建议对一般数据库都是适用的,如果要获取大量结果,可以使用search_after api,或者scroll (新版本中已经不推荐)。 b.避免大的文档。 2. 如何提高索引速度 a.使用批量请求。为了达到最好的效果,可以进行测试,递增地提高bulk的数量,
阅读全文
摘要:最近阅读了elasticsearch的官方文档,学习了它的很多特性,发现elasticsearch和mysql有很多地方类似,也有很多地方不同。这里做一个对比,帮助大家加深对elasticsearch的理解。 特性 elasticsearch mysql 备注 场景 全文搜索,日志处理,空间数据分析
阅读全文
摘要:1.概述 前面几篇讲述了es的许多重要的逻辑,这些逻辑都涉及到一个非常核心的类ClusterState,本文来看下ClusterState包括什么信息。 2.ClusterState 从注解中我们看到,CusterState表示整个集群的状态,其中的数据都是不可变的(除了RoutingTable),
阅读全文
摘要:1.概述 es(elasticsearch,下同)的选举流程相对来说比较简单,使用的bully算法,简而言之,就是谁强谁就是老大,待会儿看下怎么判定谁更强。 2.选主流程 在启动篇中我们讲解了节点启动的一些逻辑 // org.elasticsearch.node.Node // start afte
阅读全文
摘要:1.概述 上文我们讨论了es(elasticsearch,下同)索引流程,本文讨论es查询流程,以下是基本流程图 2.查询流程 为了方便调试代码,笔者在电脑上启动了了两个节点,创建了一个索引如下,该索引有两个分片,没有复制分片 使用postman发送如下请求: 接下来,我们看代码(本系列文章源代码版
阅读全文
摘要:1.概览 前面我们讨论了es是如何启动,本文研究下es是如何索引文档的。 下面是启动流程图,我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求,创建一个文档 我们发送的是http请求,es也有一套http请求处理逻辑,和sprin
阅读全文
摘要:1.前面我们在《(一)elasticsearch 编译和启动》和 《(二)elasticsearch 源码目录 》简单了解下es(elasticsearch,下同),现在我们来看下启动代码 下面是启动流程图,我们按照流程图的顺序依次描述 2.启动流程 org.elasticsearch.bootst
阅读全文
摘要:在阅读源码之前,我们先来看看整个项目的结构:(同(一)elasticsearch 编译和启动,我们使用版本7.4.0作为示例) .ci,持续集成配置 .github, 里面有 PULL_REQUEST_TEMPLATE.md,是关于pr规范的介绍 benchmarks, 标准测试套件 build开头
阅读全文
摘要:1.准备 先从github官网上clone elasticsearch源码到本地,选择合适的分支。笔者这里选用的是7.4.0(与笔者工作环境使用的分支一致),此版本编译需要jdk11。 2.编译 Readme 中说明了编译命令 ./gradlew assemble 执行此命令,等待1h左右即可,根据
阅读全文