首页>参考读物>计算机科学与技术>软件与程序设计

Elasticsearch搜索引擎构建入门与实战
作者 : 高印会 编著
出版日期 : 2021-10-29
ISBN : 978-7-111-69422-9
定价 : 89.80元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 316
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书从Elasticsearch的基本概念和原理讲起,然后系统介绍Elasticsearch的使用场景,带领读者近距离接触Elasticsearch。本书涵盖客户端的安装和使用、索引的创建、文档的操作、搜索匹配、搜索排序和聚合,可以帮助读者循序渐进地掌握Elasticsearch的相关知识。
本书共8章,分为3篇。第1篇“Elasticsearch基础”,主要介绍Elasticsearch的基础知识和基本用法;第2篇“Elasticsearch提高”,首先介绍文本搜索和排序原理,然后介绍聚合的使用方法;第3篇“Elasticsearch实战”,以酒店搜索为例,详细介绍Elasticsearch在实际搜索应用中涉及的相关技术,帮助读者全面了解搜索引擎,并提高开发水平。本书重点介绍Elasticsearch的核心功能——搜索匹配和排序,其中对中文匹配的实现用较大篇幅讲解,便于读者进行中文搜索的落地工作。另外,结合具体实例讲解排序功能,帮助读者更加透彻地理解Elasticsearch排序算法的原理。
本书内容丰富,语言通俗易懂,讲解图文并茂,案例典型而实用,适合Elasticsearch初学者和有一定基础而想提高水平的进阶人员阅读,另外还适合相关院校和培训机构作为教材。

图书特色

甲骨文、阿里巴巴等公司4位专家力荐!资深大数据专家多年ES搜索引擎构建经验总结,详解索引创建、文档操作、搜索匹配、搜索排序和聚合等技术,详解经典实战项目案例


内容全面:涵盖索引创建、文档操作、搜索匹配、搜索排序和聚合等技术。
重点突出:着重介绍搜索匹配和搜索排序两大核心功能模块的相关知识。
实用性强:结合大量典型实例进行讲解,并给出完整的搜索引擎实战案例。
紧扣主题:结合酒店搜索引擎的实际场景,详解Elasticsearch的相关知识点。
容易落地:介绍DSL(领域特定语言)的同时给出同等效果的Java代码,提高技术落地的效率。

图书前言

  随着移动互联网的发展和5G时代的到来,数据的产生和使用规模越来越大。在这个信息过载的时代,如何能让人们更加精准地找到适合自己的信息呢?答案是利用搜索引擎。
  如今,形形色色的互联网应用程序都内置了搜索引擎功能。例如,用户可以在淘宝和京东等电商平台上搜索商品,可以在携程和美团等平台上搜索低价的飞机票,还可以在百度地图和高德地图等软件中搜索某地的详细地址。
  搜索引擎的底层技术是非常专业的,需要技术人员系统地学习索引、压缩和存储等方面的知识,学习路线非常“陡峭”。而在工程实践中,技术人员往往需要一款无须熟知底层技术便可使用的搜索引擎框架,以便在较短时间内实现业务搜索的需求。作为搜索引擎框架中的佼佼者,Elasticsearch(简称ES)提供了完备的解决方案。从索引创建到搜索查询,再到搜索排序等各个方面,ES都提供了对应的服务支持,用户可以通过发送REST请求完成上述工作。如今,ES已经不是单一的搜索引擎框架,它已经演变成一个生态系统。ES与ELK的完美搭配,使系统的数据收集、数据检索和数据呈现可以无缝连接,因此越来越多的企业都采用该方案来搭建数据系统。
  笔者在使用ES构建搜索引擎的过程中查阅了大量资料,从中汲取了丰富的营养,积累了宝贵的实战经验,对ES的理解越来越深刻,因此也越来越迫切地希望将自己积累的这些经验总结成册,以帮助更多想学习ES开发的人。这便是本书写作的初衷。
本书特色
  1.内容全面,重点突出
  本书没有泛泛地介绍ES的每一个技术细节,而是将重点放在搜索匹配和搜索排序两大核心功能模块的讲解上。这两个模块涉及搜索引擎的主要功能,是工程实践中经常使用的模块。
  2.结合大量实例讲解,实用性强
  本书结合大量的ES实例进行讲解,并在最后一章给出了完整的搜索引擎实战案例,具有较强的实用性。通过阅读本书,读者可以系统地掌握ES的实战技能。
  3.贯穿主题,沉浸式学习
  本书引入酒店搜索引擎这一主题,结合酒店搜索的实际需求场景介绍ES的相关知识点,可以让读者通过沉浸式的学习体验,感受看得见、摸得着的真实案例。
  4.“双语”输出,能实验也能落地
  本书在介绍DSL(领域特定语言)的同时也会给出同等效果的Java代码,以帮助读者节省查找相关文档的时间,从而提高技术落地的效率。
本书内容
  第1篇 Elasticsearch基础
  第1章首先介绍ES的基本概念、架构原理和应用场景,然后介绍ES的安装和基本使用。
  第2章介绍ES客户端的使用,包括Kibana的安装和使用,以及Java客户端、Spring Data Elasticsearch和JestClient的使用。
  第3章介绍ES的索引、映射和文档的基本操作,其中,文档的操作重点介绍批量写入、更新和删除等相关操作。
  第4章介绍ES的搜索功能,包括基于term的普通搜索、文本匹配和基于地理位置的搜索,以及ES提供的辅助搜索工具的使用。
  第2篇 Elasticsearch提高
  第5章介绍ES文本搜索的原理和使用,重点介绍分析器的原理和使用,另外针对中文搜索,介绍同义词和停用词的管理,以及文本高亮显示搜索功能的使用。
  第6章介绍ES搜索排序的原理和使用,同时结合实例介绍打分的具体方式以及ES支持的用户自定义打分的相关功能。
  第7章介绍ES聚合的相关知识点,重点结合业界的聚合场景,介绍聚合指标、桶聚合和聚合方式等相关功能。
  第3篇 Elasticsearch实战
  第8章从构建一个酒店的搜索引擎应用出发,介绍搜索建议、搜索匹配和搜索排序三大模块的实现,并给出前端实现的逻辑代码,从而帮助读者不借助外力即可独立完成开发工作。
本书读者对象
* 搜索引擎初学者;
* 想转型做搜索引擎开发的工程人员;
* 想对现有搜索引擎进行优化的工程人员;
* 对搜索技术感兴趣的爱好者;
* 大中专院校信息技术类专业的学生;
* 相关培训机构的学员。
配书资源获取方式
  本书涉及的所有源代码需要读者自行下载。请在机工新阅读网站(www.cmpreading.com)上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接进行下载。此外,读者还可以在百度网盘https://pan.baidu.com/s/1XQaHieTBIGOg5JeQbSDkyA(提取码0trh)上下载这些资源。
意见反馈
  限于笔者水平和写作时间,书中可能还存在一些疏漏,敬请各位读者批评和指正。如果您对本书有任何疑问,请加入QQ群(907471409)与笔者或其他读者交流,也可以发送电子邮件到hzbook2017@163.com获得帮助。
致谢
  感谢众多ES人的无私奉献!没有他们的付出,本书很难和读者见面。
  感谢罗雨露女士!在写作的过程中,她为本书提供了很多详尽的改进意见。
  感谢公司搜索项目的领导和同事!在我遇到困难时,他们的帮助如今还历历在目。
  感谢家人和朋友的支持!编写本书需要投入大量的精力,如果没有他们的理解、支持和鼓励,本书很难有机会出版。
  最后感谢各位读者朋友!本书因你们而有价值,这也是我完成本书的最大动力。
  
  高印会

上架指导

计算机\程序设计

封底文字

本书赞誉
本书由浅入深地介绍Elasticsearch搜索引擎构建从基础到提高再到项目实战的相关知识,内容通俗易懂,实用性强,阅读后让人有立刻付诸实践的冲动。本书通过大量的示意图对复杂的公式和原理进行分析,以帮读者透彻地理解相关知识点,另外还对开发中的常见问题做了专门分析并给出独特的见解。通过阅读本书,你会发现搜索引擎开发其实并不难。
——阿里巴巴数据研发专家 王海洋

本书结合作者在企业内部参与的典型项目案例和积累的大量实战经验,循序渐进地将Elasticsearch的完整知识体系进行深度剖析。作者在介绍每个技术点时,将Elasticsearch应用中经常会碰到的重点问题和难点问题进行解析,帮助读者更加深入地理解所学知识。可以说,本书做到了理论与实战的完美结合,值得每一个Elasticsearch学习者阅读。
——福佑卡车大数据负责人/前玖富集团大数据部总经理兼高级总监 刘蔚良

很荣幸受邀阅读这部佳作。本书适合想要学习Elasticsearch搜索引擎技术的初学者入门,也适合从业人员进行开发实践。作者既对Elasticsearch基础知识做了全面介绍,又对Elasticsearch高级技术做了深度探索,还提供了Elasticsearch典型项目案例帮助读者进行开发实践。通过阅读本书,读者不但可以掌握基础知识,而且还可以进一步进阶提升,从而解决搜索工作中的诸多问题。
——汽车之家高级数据分析工程师 陈巧玉

配书资料获取方式:
本书涉及的案例源代码需要读者下载。请在www.hzbook.com上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接进行下载,另外也可以按照本书前言中给出的百度网盘地址进行下载。

作者简介

高印会 编著:本书特色
内容全面:涵盖索引创建、文档操作、搜索匹配、搜索排序和聚合等技术。
重点突出:着重介绍搜索匹配和搜索排序两大核心功能模块的相关知识。
实用性强:结合大量典型实例进行讲解,并给出完整的搜索引擎实战案例。
紧扣主题:结合酒店搜索引擎的实际场景,详解Elasticsearch的相关知识点。
容易落地:介绍DSL的同时给出同等效果的Java代码,提高技术落地的效率。

推荐序

  Elasticsearch的专业书籍很多,有的强调概念,有的强调经验,但其内容大多只涵盖某一个方面。本书从一个从业者的视角出发,结合作者多年的一线工作经验和心得,用言简意赅的方式由浅入深地介绍Elasticsearch的基本概念、操作步骤和高级技术,帮助读者理解生涩的概念,带领他们快速掌握Elasticsearch的实际操作技能。
  本书从基础、提高和实战三个方面进行阐述。在基础篇中,作者用通俗易懂的语言对概念进行简明扼要的讲解,并对相关技术进行对比,帮助读者系统地了解相关概念并快速上手操作。在提高篇中,作者结合实际经验深度剖析Elasticsearch的高级功能和深层次设计理念,并结合示例对文本搜索、排序算法和聚合操作等Elasticsearch的核心功能做深入讲解,帮助读者加深对Elasticsearch的理解。在实战篇中,作者从需求分析、方案制定和功能实现几个方面系统地介绍一个酒店搜索的真实项目案例,帮助读者全面了解Elasticsearch在真实项目中的应用和优势。
  我与作者共事多年,被他认真工作的态度所折服,他对技术锲而不舍的钻研精神值得每一个技术人员学习。本书介绍的大量实操内容是他多年从业经验的总结,可以让相关技术人员少走很多弯路。最后由衷地祝贺本书能够顺利出版!
  
  
  甲骨文解决方案架构师 梁山
  2021年8月

图书目录

推荐序
前言
第1篇 Elasticsearch基础
第1章 Elasticsearch入门 2
1.1 Elasticsearch概述 2
1.1.1 Elasticsearch简介 2
1.1.2 Elasticsearch的基本概念 3
1.1.3 Elasticsearch和关系型数据库的对比 5
1.2 Elasticsearch的架构原理 7
1.2.1 节点职责 7
1.2.2 主分片和副分片 9
1.2.3 路由计算 10
1.2.4 文档读写过程 10
1.3 Elasticsearch的应用场景 12
1.3.1 搜索引擎 12
1.3.2 推荐系统 12
1.3.3 二级索引 13
1.3.4 日志分析 14
1.4 Elasticsearch的安装 14
1.4.1 单机模式安装 15
1.4.2 集群模式安装 16
1.5 Elasticsearch搜索入门 17
1.5.1 创建索引 17
1.5.2 写入文档 18
1.5.3 根据_id搜索文档 19
1.5.4 根据一般字段搜索文档 19
1.5.5 根据文本字段搜索文档 20
第2章 Elasticsearch客户端实战 22
2.1 Kibana客户端简介 22
2.1.1 Kibana的安装 22
2.1.2 在Kibana中搜索文档 23
2.2 Java客户端简介 24
2.2.1 Java客户端的使用 25
2.2.2 Java带验证客户端的使用 27
2.2.3 Java客户端搜索文档 28
2.3 Spring Boot客户端简介 31
2.3.1 创建Spring Boot客户端 31
2.3.2 Spring Boot客户端搜索文档 32
2.4 Jest客户端简介 33
2.4.1 创建Jest客户端 34
2.4.2 Jest客户端搜索文档 35
第3章 Elasticsearch基础操作 37
3.1 索引操作 37
3.1.1 创建索引 37
3.1.2 删除索引 38
3.1.3 关闭索引 38
3.1.4 打开索引 39
3.1.5 索引别名 39
3.2 映射操作 47
3.2.1 查看映射 47
3.2.2 扩展映射 48
3.2.3 基本的数据类型 49
3.2.4 复杂的数据类型 56
3.2.5 动态映射 61
3.2.6 多字段 61
3.3 文档操作 64
3.3.1 单条写入文档 64
3.3.2 批量写入文档 65
3.3.3 更新单条文档 67
3.3.4 批量更新文档 69
3.3.5 根据条件更新文档 70
3.3.6 删除单条文档 72
3.3.7 批量删除文档 73
3.3.8 根据条件删除文档 74
第4章 丰富的搜索功能 76
4.1 搜索辅助功能 76
4.1.1 指定返回的字段 76
4.1.2 结果计数 78
4.1.3 结果分页 79
4.1.4 性能分析 81
4.1.5 评分分析 85
4.2 丰富的搜索匹配功能 86
4.2.1 查询所有文档 87
4.2.2 term级别查询 88
4.2.3 布尔查询 96
4.2.4 filter查询原理 100
4.2.5 Constant Score查询 102
4.2.6 Function Score查询 104
4.2.7 全文搜索 106
4.2.8 基于地理位置查询 112
4.2.9 搜索建议 115
4.3 按字段值排序 118
4.3.1 按普通字段值排序 119
4.3.2 按地理距离排序 121
第2篇 Elasticsearch提高
第5章 文本搜索 126
5.1 文本搜索简介 126
5.1.1 文本的索引建立过程 126
5.1.2 文本的搜索过程 128
5.2 分析器简介 129
5.2.1 字符过滤器 130
5.2.2 分词器 131
5.2.3 分词过滤器 131
5.3 分析器的使用 132
5.3.1 测试分析API 132
5.3.2 内置分析器 134
5.3.3 索引时使用分析器 135
5.3.4 搜索时使用分析器 136
5.3.5 自定义分析器 136
5.4 中文分析器 138
5.4.1 中文分词介绍 139
5.4.2 IK分析器 140
5.4.3 HanLP分析器 144
5.5 使用同义词 147
5.5.1 建立索引时使用同义词 147
5.5.2 查询时使用同义词 149
5.6 使用停用词 154
5.6.1 使用停用词过滤器 154
5.6.2 在内置分析器中使用停用词 156
5.6.3 在IK分析器中使用停用词 156
5.6.4 在HanLP分析器中使用停用词 159
5.7 拼音搜索 161
5.7.1 拼音分析器插件的安装 162
5.7.2 拼音分析器插件的使用 163
5.8 高亮显示搜索 165
5.8.1 初步使用高亮显示搜索 166
5.8.2 选择高亮显示搜索策略 168
5.8.3 在Java客户端中进行高亮显示搜索 170
5.9 拼写纠错 171
5.9.1 使用Elasticsearch进行拼写纠错 171
5.9.2 更精准的拼写纠错 174
第6章 搜索排序 177
6.1 相关性排序 177
6.1.1 TF-IDF模型 177
6.1.2 向量空间模型 178
6.1.3 BM25算法简介 179
6.1.4 BM25实例解析 181
6.1.5 BM25参数调节 183
6.1.6 分布式场景对排序的影响 184
6.1.7 使用其他相关性算法 185
6.2 查询时设置权重 186
6.2.1 查询时boost参数的设置 186
6.2.2 在Java客户端中使用boost参数 192
6.2.3 boosting查询 193
6.2.4 在Java客户端中使用boosting查询 197
6.3 Function Score查询简介 198
6.3.1 简单函数 198
6.3.2 函数计算关系 202
6.3.3 衰减函数 203
6.4 Script Score查询简介 207
6.4.1 Painless简介 207
6.4.2 在Script Score中使用Painless 209
6.4.3 使用数组和集合 213
6.4.4 使用文档数据 214
6.4.5 向脚本传参 217
6.4.6 在Script Score中使用函数 219
6.4.7 在Java客户端中使用Script Score 224
6.4.8 练习Painless 225
6.5 二次打分 226
6.5.1 二次打分简介 226
6.5.2 使用示例 226
6.5.3 在Java客户端中使用二次打分 229
第7章 聚合 231
7.1 聚合指标 233
7.1.1 常见的统计指标 233
7.1.2 空值处理 236
7.2 桶聚合 239
7.2.1 单维度桶聚合 240
7.2.2 多维度桶嵌套聚合 246
7.2.3 地理距离聚合 249
7.3 聚合方式 253
7.3.1 直接聚合 253
7.3.2 先查询再聚合 254
7.3.3 前过滤器 255
7.3.4 后过滤器 257
7.4 聚合排序 258
7.4.1 按文档计数排序 259
7.4.2 按聚合指标排序 260
7.4.3 按分组key排序 262
7.5 聚合分页 264
7.5.1 Top hits聚合 264
7.5.2 Collapse聚合 268
第3篇 Elasticsearch实战
第8章 搜索实战 272
8.1 项目简介 272
8.1.1 背景简介 272
8.1.2 搜索建议功能简介 272
8.1.3 搜索功能简介 273
8.1.4 排序功能简介 274
8.2 技术方案 275
8.2.1 总体架构设计 275
8.2.2 组件简介 276
8.2.3 搜索建议方案 278
8.2.4 匹配方案 279
8.2.5 排序方案 280
8.3 搜索建议功能的实现 280
8.3.1 索引创建 280
8.3.2 后端服务 281
8.3.3 索引初始化 282
8.3.4 搜索建议服务 286
8.4 搜索功能的实现 288
8.4.1 项目创建 288
8.4.2 索引创建 289
8.4.3 数据初始化 290
8.4.4 整体工作 291
8.4.5 获取总页数 292
8.4.6 查询构建 293
8.4.7 结果处理和封装 296
8.4.8 对搜索排序进行打分 298
8.5 前端功能的实现 299
8.5.1 项目创建 299
8.5.2 请求转发 300
8.5.3 搜索建议交互 300
8.5.4 搜索交互 301

教学资源推荐
作者: Brian W.Kernighan
作者: 郑阿奇 梁敬东 主编 朱毅华 时跃华 赵青松 编著
作者: [美]贝赫鲁兹·A. 佛罗赞(Behrouz A.Forouzan) 理查德·F. 吉尔伯格(Richard F. Gilberg) 著
参考读物推荐
作者: [西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno Garcia) 奥斯卡·德尼茨·苏亚雷斯(Oscar Deniz Suarez) 何塞·路易斯·埃斯皮诺萨·阿兰达(Jose Luis Espinosa Aranda) 等著
作者: (美)Robert C.Seacord 著
作者: [美]埃内斯·比尔金(Enes Bilgin) 著