15 thoughts on “《Elasticsearch 源码解析与优化实战》勘误表

  1. 第22章 关于profile相关元素的解释,我看6.6中很多元素已不包含或有改动 能否以最新版本进行一次讲解

  2. 市面上没有关于es源码的书,我是冲着源码这两个字来的,个人觉得还是有点失望的,其实es的方法论网上已经挺多了,但是对于源码的梳理非常少。举个例子,第三章的篇幅非常少,才5页,我觉得完全可以在代码层面详细介绍启动过程。

    1. 第三章是一个整体的流程,他会涉及很多复杂的子流程,因此无法全部展开,作为给读者的初步和全局上的认识,从宏观上大致看一下,所涉及的子流程在后面的章节都介绍了

  3. 勘误第一章:
    1.1基本概念和原理
    段2,因此,结论说明es不适合海量数据,前面给出的原因是不适合集群规模规模较大。
    段3,基于ES,需描述es为elasticsearch简写。
    1.1.1索引结构
    段1,并且可能,此处应该是可以不是一种可能
    1.1.2分片
    段3,主数据是什么概念
    段5,ES每次”refresh”,是指缓存刷新吗?
    后数段3,删除的docs,这里doc是否和前面文档概念一致。
    后数段1,保证单个索引的数据量不会太大,这里是否有多大的指标。
    1.1.3动态更新索引
    段3,在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。

    1. 感谢反馈,相关问题回复如下:
      1.关于 ES 简写,在前言中有说明,后续将简称 ES
      2.关于不适合海量,这句后来去掉了
      3.《并且可能》是为了论述一种需求导致的可能性,主要目的不在于叙述他可以支持什么
      4.改写为《主分片数据》更为合理
      5. refresh 在1.1.5有解释
      6.删除的docs,这里doc是否和前面文档概念一致 是的,从出版的角度来说 doc 应该改为文档
      7.保证单个索引的数据量不会太大,这里是否有多大的指标 建议单个分片大小不超过50G,20-30G 较好
      8.在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。 元信息是一个通用的概念,因为是第一章,此处没有说明元信息具体是哪个文件,只是说明一下原理

  4. 勘误第二章:
    新的版本有一些改动,需要使用java 11以上版本,调试方法参考:https://www.elastic.co/cn/blog/how-to-debug-elasticsearch-source-code-in-intellij-idea
    2.2.2 远程调试和2.3 代码书签和断点组仍将试用。

    1. 这个需要参考上下文,指集群级别,和索引级别的元信息,具体内容可以参考 cluster 那章对 clusterstate 的解释

  5. 41页 第5章 选主流程
    5.5 流程概述
    “””
    ZenDiscovery的选主过程如下:
    – 每个节点计算最小的已知节点ID,该节点为临时Master。向该节点发送领导投票。
    “””

    发现其他几处对Bully算法的描述,应该是选取节点ID大值:
    “””
    5.3.1 Bully算法
    任何时候当前Leader都是参与集群的最高ID节点。

    3.1 选举主节点 第二段
    对节点ID排序,取ID值最大的节点作为Master,每个节点都运行这个流程
    “””

    结合第5章中排序的代码:
    return (x<y) ? -1 : ((x==y)?0:1)

    看起来应该是选举ID小值?与Bully算法有差异还是笔误?

    1. 抱歉,看到堪误表里面有对应内容,之前以为本帖是反馈帖。

      另外想确认一下,每个Node会有自己认为的Master,拿到各人认为的Master = activeMaster列表,从这个activeMaster列表中投票得到的是多个node认为的临时Master,临时Master得到足够数量的join时就会认为自己是最终的Master,并且发布集群状态+确认Join请求,这样理解是正确的吗

发表评论

邮箱地址不会被公开。 必填项已用*标注