豆瓣镇楼

Elasticsearch搜索引擎开发实战

目录 书分8章

  1. 简介, 安装, java api 这些时效性太强, 跳过.
  2. 开发中文搜索, 介绍分词和插件开发. 估计也可以跳过.
  3. mapping 这个要好好看看
  4. 源码分析 时效性也挺强,看看结构吧
  5. 提高搜索相关性 向量空间模型, BM25模型,学习评分, 检索意图识别 感觉这个有点高级,可能用不上暂时
  6. 界面开发, searchkit 是啥. springboot, pebble, spring-data-elasticsearch, rest, vue, suggester, word2vec, rust开发界面??? 这一锅都什么玩意. 突然想弃了
  7. elastic stack kafka分布式流平台啥意思, kafka stream ? graylog 是啥, 涨涨知识先.
  8. 案例 介绍 双语句对 搜索,cms搜索,临床医药实验搜索…

感觉这玩意过于易用, 其实本身的dsl-sql 那部分才是要特别关注的感觉. 这书估计有一半内容是可看的, 很多估计都过时了. 好像是15年的老书了.

现在es 7 都快不支持java8了

适合对象

  1. 信息检索技术爱好者, 好吧,还有爱这个的
  2. 搜索引擎开发人员 我应该算这个, 虽然很一般
  3. seo人?? 对公优化就算了. 对私优化,估计我算
  4. 算法研究, 算了. 没心情看那些树. 倒是有时间可以统一翻一翻
  5. ???

作者居然是 1+n 多人编写的书, 除了特殊情况基本都是垃圾书.希望这书不是. 我看看先.. 公司买这书干嘛

正文

还是顺序看吧, 先看目录有个底,前面可以稍微快点.

cmd 部分就当骗稿费了.

第一章

json格式 好吧, 写过parser就不看了

graph LR
Lucene --> es
netty --> es

刚刚其实好像看目录, 这货还有guice

es 支持多协议, tcp传输… 默认http. 话说, 为啥servlet,memcached也算是协议?? 我是记错了? zeromq听过

这个http 协议又讲了一遍, 真的来凑字数啊.

也不是, 东西还挺全的. 应该只是抓不住重点..

cron, 生产机器的ip暴露都说了.. httpie也出来了.

http http://localhost:9200/_cluster/health

第二章

trie树和马尔科夫链?? 打个 todo 吧. 用到再回来看. 这书还是挺用心的嘛 Elasticsearch 5.2.0中包含的Lucene 6.4.0有了让人满意的解决办法,可以进行同义词查询,只要在搜索时间而不是索引时间应用同义词即可。

第三章 mapping

其实主要就是为了看这章.

感觉前3小节啥都没讲, 没超出es文档第一章start. 第四章讲了个如何自动检测数据类型, json进来以后直接parse不就行了吗. 这用的dfa

BasicAutomata.makeCharRange(‘0’, ‘9’).repeat(1);

这怎么跑到regex匹配去了,这就是[0-9]{1}的java写法啊.. 这段也跳过了吧,回头再看一下master regex 3

第四章 深入源码

基础的Lucene使用还是用过的, indexwriter,indexreader,document啥的. ivy 知道就行了.

4.1.4 这个并发控制, 硬盘写入 用的 引用计数来做的. 涨知识了 这还能扯到 jucatomicinteger. 有意思. 好吧, 居然真讲了半天的 并发控制.. 这个还是看专门的书吧. dog lea的就行.

4.2 启动

  1. 命令行参数parse, JOpt Simple
  2. ioc容器 guice
  3. jodatime, 其实就是 jdk8转正那个小三
  4. transport 网络线程中不能调用阻塞代码,所以需要把网络线程和非网络线程区分开。枚举类型Transports中的静态方法isTransportThread()根据线程的名字判断一个线程是否为网络线程。
  5. threadpool+queue 永恒的王啊,到处都是他
  6. 模块 ·transport-netty4:用于网络通信; ·aggs-matrix-stats:矩阵聚合在多个字段上工作,并产生一个矩阵作为输出; ·analysis-common:包含一些常用的TokenFilter; ·ingest-common:实现摄取的公用类; ·lang-expression:实现表达式脚本引擎; ·lang-mustache:Mustache脚本引擎; ·lang-painless:painless脚本引擎; ·parent-join:父连接; ·percolator:实现注册查询功能; ·reindex:重新索引Elasticsearch数据; ·repository-url:用于URL存储的模块。
  7. netty reactor
  8. 缓存 lru,lfu,fifo 节点查询缓存、分片请求缓存和字段数据缓存。 Sematex datadog 可以监控缓存.. 估计用不上 简单的可以用命令. curl -XGET ‘http://localhost:9200/_cat/nodes?v&h=id,queryCacheMemory,
  9. 分布式 这玩意是es的王者部分啊.做的很好了 zen discovery 选举算法不是 peer-reviewed published algorithm… 只是先选节点编号小的 经典的 N/2 +1 防止脑裂 理想的拓扑结构是有3个专用的主节点(即master:true并且data:false

    没有使用Spring实现依赖注入的原因是:Spring需要配置文件,用起来太笨重。Elasticsearch直接把Guice的源码放入了自己的 org.elasticsearch.common.inject包内 不知道es会换springboot么

  10. 跨集群搜索, 这个是真高级. 头回知道

  11. jvm monitor, 为啥会讲这个…

Lucene 6 基本已经代码收敛了.. 其实netty也是.. 模型不变,几乎没啥必要动. 5就放弃了

第五章

·准确率=返回结果中相关文档数目/返回结果的数目;
·召回率=返回结果中相关文档数目/所有相关文档数目。

这部分跳了..

第六章

Searchkit居然是react.. 这vue react都上, 确定大丈夫?

Suggesters(搜索词提示推荐器)基本的运作原理是将输入的文本分解为词,然后在索引的字典里查找相似的词并返回。根据使用场景的不同,Elasticsearch里设计了4种类别的Suggester,分别是 Term Suggester、Phrase Suggester、Completion Suggester和Context Suggester。

FST

第八章

okhttp, jsoup

别说这书的框架用的还行.

  • 爬虫
  • 英语分词 这个好玩还以为不需要呢
  • 句子切分
  • 词性标注

学到一个药物临床实验数据地址 http://www.chinadrugtrials.org.cn/eap/clinicaltrials. searchlist

PanLex 双语字典 Mono 也是很神奇啊这个技术选型

参考文献

[1]罗刚,张子宪,崔智杰.Java中文文本信息处理——从海量到精准[M].北京:清华大学出版社,2017. [2]罗刚.解密搜索引擎技术实战——Lucene&Java精华版(第3版)[M].北京:电子工业出版社,2016. [3]罗刚.网络爬虫全解析——技术、原理与实践[M].北京:电子工业出版社,2017. [4]尼克.人工智能简史[M].北京:人民邮电出版社,2017.

读后总评

居然几乎全是自己的书 这人挺有意思

书的质量不怎么样, 增长见闻还行. 作者好像很厉害.不过大佬估计也是个理科生, 重心把握可能不太好. 这书看下来,我也不知道我学到了什么. 似乎也全能学到? 涉及的面太广了.

还有就是, 这书到底是哪一年的.. string类型在5.x已经预备淘汰, 以后会淘汰. keyword 也没提到好像. 或许是老书??

或许我该先看看豆瓣的… 唉

吴下阿蒙 2018-11-17 胡拼乱凑的一本书,讲得很浅,而且逻辑性非常差。刷新了我的认知。

0 有用CyrilChien 2018-12-10 胡拼乱凑, cmd打开,cd切换目录,各种工具安装都能讲几页,逻辑混乱, 排版差劲, 真是刷新认知

0 有用ShineYoung 2018-08-21 读了一边,知识点零碎,不成体系,阅读体验很差,和看别人博客没什么区别,书也太薄了,一些原理春秋笔法带过,不懂的人看不懂,懂的人看了用处不大,书的感觉更像是作者的学习笔记?