首页>参考读物>计算机科学与技术>计算机网络

Elasticsearch技术解析与实战
作者 : 朱林 编著
出版日期 : 2017-01-09
ISBN : 978-7-111-55327-4
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 433
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

包含Elasticsearch 5最新功能,凝聚了作者多年开发经验
分布式大数据全文搜索与数据挖掘必备工具
本书从应用的角度深入浅出地对Elasticsearch做了全方位的剖析,从index、shard、document、cluster等基础概念到高阶的运维配置、集群优化等,从Lucene原理到Elasticsearch的高可用性实现。作者注重细节,甚至给出具体场景的参数配置,为学习Elasticsearch提供了快速进阶之路。
—— 吴树鹏 滴滴出行首席安全顾问

这可能是介绍Elasticsearch最详尽的中文参考书了,作者研究这个领域多年,有极强的实践经验。作者公司的SeciLog底层引擎也用的是Elasticsearch,该产品经过了多方实战检验。如果想深入研究Elasticsearch,这本书应是最合适的选择!
—— 张百川 游侠安全网 www.youxia.org 站长

Elasticsearch是众多开源搜索系统里的一把神器,我们的ZoomEye就使用了Elasticsearch作为搜索模块,Elasticsearch的高效、快捷、稳定给用户带来了很好的搜索体验。这本书是业内首次对Elasticsearch深入浅出进行全面介绍的原创成果,相信一定会对读者带来切实的帮助。  
—— 赵伟 知道创宇CEO

作者简介
朱林 资深开发人员,有16年开发经验,11年安全产品开发经验,对安全技术、日志分析有较深的研究。于2013年创立南京赛克蓝德网络科技有限公司,公司专注于安全产品的开发,目前主要开发的产品是赛克蓝德日志分析软件。
作者邮箱:zhulin@secisland.com

图书前言

Elasticsearch是目前全球最受欢迎的全文搜索引擎。初识Elasticsearch是在2012年的一个项目中,当时Elasticsearch还是0.19.0版本,但是功能已经比较强大,只是接口稍微有点复杂。到了2015年年初,公司开发了一款日志分析产品,它实时不间断地采集用户网络中各种不同系统的日志,然后从中分析系统的安全情况、系统情况、业务情况。最初所有的数据都存储在MySQL中,随着日志的不断增加,MySQL搜索速度越来越慢。后来在更换技术架构选型的时候又想到了Elasticsearch,这个时候Elasticsearch已经是1.6.0版本了。我们对此进行了简单的测试,在上亿条的数据搜索中很多都在一秒内完成,在上亿条的数据中进行统计分析大多也是在秒级完成,它展示了强大实力。我们顺势就把Elasticsearch整合到了现在的产品中,取得了很好效果。到了2016年3月的时候,Elasticsearch发布了2.3.0版本,各方面更加成熟,我们的产品又再一次升级到这个新版本上。
Elasticsearch产品的更新变化非常快,在我们开发研究的过程中基本上找不到新版本的中文资料,目前市场上介绍Elasticsearch的中文书籍都是在版本1.0左右,甚至更早,这些书的很多内容尤其是开发接口相关的部分都已经过时,没有办法在新版本中使用。所以我们开发的过程中基本上都是研究官方文档,有时候甚至研究它的源码才能解决问题。在接口选择的时候我们在HTTP JSON接口和Java接口中做了取舍,我们当时分析HTTP JSON接口最终还是要转换成Java接口,不如直接使用Java接口,一是效率可能更高,二是在部署实施的时候减少一个端口,三是对后续的升级更有利,比如后续增加权限认证等。但这些东西都没有资料,我们基本上都是研究系统源码来克服的。在后续研究过程中,我们发现HTTP接口转换到Java接口是有规律的,所以对HTTP接口的掌握对后续Elasticsearch的开发和扩展也有很大的帮助。在持续研究的过程中,我们积累了大量经验,并想把这些经验分享给更多需要的人。后来我把这个想法给出版社的吴怡编辑做了沟通,她非常支持我们的想法,便有了这本书。
本书首先介绍Elasticsearch的相关基础知识,然后由浅入深地介绍Elasticsearch索引查询相关的知识,包括索引、映射、搜索、聚合,接着介绍Elasticsearch的集群、分词、重要的配置等高级功能,以及Elasticsearch相关的其他产品,包括告警、监控、权限管理,最后通过一个ELK示例结束本书。在写作的时候考虑到读者的接受能力,由浅入深地进行讲解,建议读者从前往后阅读。
本书主要内容包括:
第1章 “Elasticsearch入门”,介绍Elasticsearch是什么、Apache Lucene的基础知识、Elasticsearch的术语、JSON介绍、Elasticsearch的安装运行、Elasticsearch的HTTP接口和Elasticsearch的Java API接口。
第2章 “索引”,介绍和Elasticsearch索引相关的接口,包括索引管理、索引映射管理、索引别名、索引设置、索引监控、索引其他重要接口以及文档管理。
第3章 “映射”,介绍Elasticsearch文档的内部结构,Elasticsearch支持的字段类型,除此之外,本章还将展示Elasticsearch内置的元字段,映射的参数和动态映射功能。
第4章 “搜索”,详细介绍和搜索相关的知识,包括搜索的详细参数,搜索的评分机制、滚动查询、系统内部隐藏内容的查询、搜索模板等;接着介绍Elasticsearch的领域查询语言DSL(Domain-specific Language)相关的知识点;最后介绍Elasticsearch的精简查询接口。
第5章 “聚合”,聚合可以对文档中的数据进行统计汇总、分组等,通过聚合可以完成很多的统计功能,该章介绍聚合相关的知识,包括度量聚合、分组聚合和管道聚合。
第6章 “集群管理”,详细介绍和集群相关的内容,包括集群的监控、集群分片迁移、集群的节点配置、集群发现、集群平衡的原理和配置。
第7章 “索引分词器”,介绍Elasticsearch的分词器和分词的原理,以及如何添加新的分词器等;还介绍Elasticsearch的插件相关知识,包括插件安装等。
第8章 “高级配置”,介绍Elasticsearch的高级配置,包括网络配置、脚本配置、快照和恢复配置、线程池配置和索引配置。
第9章 “告警、监控和权限管理”,介绍Elasticsearch官方支持的几个比较好的插件:Watcher、Marvel、Shield,它们可以对Elasticsearch进行告警、监控和权限管理。
第10章 “ELK应用”,介绍Elasticsearch与另外两个产品Logstash和Kibana如何组合使用,Logstash是对日志进行收集和处理,Kibana是对存储在Elasticsearch中的索引进行展示和报表分析;最后通过一个简单的示例来介绍ELK几个产品是如何关联的。
在编写本书的时候,Elasticsearch的最新版本是2.2.0,但本书准备正式出版的时候,Elasticsearch发布了最新的5.0版本。所以本书增加了一个附录专门介绍5.0版本的特性与改进。本书前面的部分截图是2.2.0版本的,书中所有的例子和功能都可以在Elasticsearch 2.3.3下运行,大部分的功能都可以在5.0下运行,详细的新版本差别请参考附录部分。本书中的例子大部分都是HTTP接口的,这些接口的测试使用了Elasticsearch Head插件。如果你想使用另一种工具,请注意修改HTTP请求的格式和编码,以便适合你所选择的工具。书中例子的结构大多是JSON格式,美化后的JSON格式比较容易阅读,但美化后的JSON格式比较长,所以我们在不影响阅读的情况下,对美化后的格式做了简单调整。书中还有一小部分是Java接口,我们在实验时用的是Eclipse工具,其他主流的Java开发工具都适用。
本书的目标读者是对全文检索和Elasticsearch有兴趣的读者,如果你是一个初学者,通过本书你将学到Elasticsearch的基础知识,以及如何使用一些高级功能。如果你已经知道并使用了Elasticsearch但又想深入了解其本身,想了解如何改进查询相关性,如何使用Elasticsearch Java API等,也会发现本书的实用性。
由于时间紧,能力有限,编写的过程中难免有不当之处,还请各位读者不吝指出。
致谢
在此,首先我想感谢我的家庭,多年以来,因为工作关系我照顾他们太少,他们为我付出太多;我在全身心投入本书写作的时候,他们同样表现出了极大的耐心,是我最坚强的后盾。
其次还要感谢赛克蓝德公司以及公司的同事:周忠立、万荣慧和夏海华,是他们的辛勤工作才完成本书的编写工作,尤其是周忠立在很多章节的编写上贡献了很多的内容;同时要感谢本书的出版团队,尤其是吴怡编辑,写书是件非常艰巨的任务,很多内容需要反复推敲才能表达准确的意思,吴怡在检查错误、校稿、消除表达歧义等方面做出了很多贡献。
最后,非常诚挚地感谢所有Elasticsearch项目的创建者和开发者,感谢他们杰出的工作和对开源项目的热情。没有他们,就没有本书的诞生,没有他们,开源搜索引擎就不会有现在这种活力。再次感谢!

朱林
2016年10月于南京

上架指导

计算机\网络

封底文字

本书从应用的角度深入浅出地对Elasticsearch做了全方位的剖析,从index、shard、document、cluster 等基础概念到高阶的运维配置、集群优化等,从Lucene原理到Elasticsearch的高可用性实现都做了详尽的分析和阐述。作者注重细节,并给出具体场景的参数配置,为学习Elasticsearch提供了快速进阶之路。
—— 吴树鹏 滴滴出行首席安全顾问

这可能是国内业界首次介绍Elasticsearch最详尽的论述了,作者研究这个领域多年,有极强的实践经验,作者公司的SeciLog底层引擎也是Elasticsearch,该产品经过了多方实战检验。如果想深入研究Elasticsearch,这本书应是最合适的选择!
—— 张百川 游侠安全网 www.youxia.org 站长

Elasticsearch是众多开源搜索系统里的一把神器,我们的ZoomEye就使用了Elasticsearch作为搜索模块,Elasticsearch的高效、快捷、稳定给用户带来了很好的搜索体验,这本书是业内首次对Elasticsearch深入浅出进行全面介绍的原创成果,相信一定会对读者带来切实的帮助。
—— 赵伟 知道创宇CEO

作者简介

朱林 编著:暂无简介

图书目录

前言
第1章 Elasticsearch入门 1
1.1 Elasticsearch是什么 1
1.1.1 Elasticsearch的历史 2
1.1.2 相关产品 3
1.2 全文搜索 3
1.2.1 Lucene介绍 4
1.2.2 Lucene倒排索引 4
1.3 基础知识 6
1.3.1 Elasticsearch术语及概念 6
1.3.2 JSON介绍 10
1.4 安装配置 12
1.4.1 安装Java 12
1.4.2 安装Elasticsearch 12
1.4.3 配置 13
1.4.4 运行 15
1.4.5 停止 17
1.4.6 作为服务 17
1.4.7 版本升级 19
1.5 对外接口 21
1.5.1 API约定 22
1.5.2 REST介绍 25
1.5.3 Head插件安装 26
1.5.4 创建库 27
1.5.5 插入数据 28
1.5.6 修改文档 28
1.5.7 查询文档 29
1.5.8 删除文档 29
1.5.9 删除库 30
1.6 Java接口 30
1.6.1 Java接口说明 30
1.6.2 创建索引文档 33
1.6.3 增加文档 34
1.6.4 修改文档 35
1.6.5 查询文档 35
1.6.6 删除文档 35
1.7 小结 36
第2章 索引 37
2.1 索引管理 37
2.1.1 创建索引 37
2.1.2 删除索引 39
2.1.3 获取索引 39
2.1.4 打开/关闭索引 40
2.2 索引映射管理 41
2.2.1 增加映射 41
2.2.2 获取映射 44
2.2.3 获取字段映射 45
2.2.4 判断类型是否存在 46
2.3 索引别名 46
2.4 索引配置 51
2.4.1 更新索引配置 51
2.4.2 获取配置 52
2.4.3 索引分析 52
2.4.4 索引模板 54
2.4.5 复制配置 55
2.4.6 重建索引 56
2.5 索引监控 60
2.5.1 索引统计 60
2.5.2 索引分片 62
2.5.3 索引恢复 63
2.5.4 索引分片存储 64
2.6 状态管理 64
2.6.1 清除缓存 64
2.6.2 索引刷新 64
2.6.3 冲洗 65
2.6.4 合并索引 65
2.7 文档管理 66
2.7.1 增加文档 66
2.7.2 更新删除文档 69
2.7.3 查询文档 73
2.7.4 多文档操作 76
2.7.5 索引词频率 80
2.7.6 查询更新接口 83
2.8 小结 87
第3章 映射 88
3.1 概念 88
3.2 字段数据类型 90
3.2.1 核心数据类型 91
3.2.2 复杂数据类型 96
3.2.3 地理数据类型 100
3.2.4 专门数据类型 106
3.3 元字段 108
3.3.1 _all字段 109
3.3.2 _field_names字段 109
3.3.3 _id字段 110
3.3.4 _index字段 110
3.3.5 _meta字段 111
3.3.6 _parent字段 111
3.3.7 _routing字段 112
3.3.8 _source字段 114
3.3.9 _type字段 115
3.3.10 _uid字段 115
3.4 映射参数 116
3.4.1 analyzer参数 116
3.4.2 boost参数 118
3.4.3 coerce参数 119
3.4.4 copy_to参数 120
3.4.5 doc_values参数 121
3.4.6 dynamic参数 122
3.4.7 enabled参数 122
3.4.8 fielddata参数 123
3.4.9 format参数 126
3.4.10 geohash参数 128
3.4.11 geohash_precision参数 129
3.4.12 geohash_prefix参数 130
3.4.13 ignore_above参数 131
3.4.14 ignore_malformed参数 131
3.4.15 include_in_all参数 132
3.4.16 index参数 133
3.4.17 index_options参数 133
3.4.18 lat_lon参数 134
3.4.19 fields参数 135
3.4.20 norms参数 136
3.4.21 null_value参数 137
3.4.22 position_increment_gap参数 137
3.4.23 precision_step参数 138
3.4.24 properties参数 138
3.4.25 search_analyzer参数 139
3.4.26 similarity参数 140
3.4.27 store参数 141
3.4.28 term_vector参数 141
3.5 动态映射 142
3.5.1 概念 142
3.5.2 _default_映射 143
3.5.3 动态字段映射 143
3.5.4 动态模板 145
3.5.5 重写默认模板 148
3.6 小结 148
第4章 搜索 149
4.1 深入搜索 149
4.1.1 搜索方式 149
4.1.2 重新评分 153
4.1.3 滚动查询请求 155
4.1.4 隐藏内容查询 158
4.1.5 搜索相关函数 161
4.1.6 搜索模板 164
4.2 查询DSL 167
4.2.1 查询和过滤的区别 167
4.2.2 全文搜索 168
4.2.3 字段查询 179
4.2.4 复合查询 183
4.2.5 连接查询 188
4.2.6 地理查询 190
4.2.7 跨度查询 197
4.2.8 高亮显示 200
4.3 简化查询 203
4.4 小结 206
第5章 聚合 207
5.1 聚合的分类 207
5.2 度量聚合 209
5.2.1 平均值聚合 209
5.2.2 基数聚合 211
5.2.3 最大值聚合 213
5.2.4 最小值聚合 214
5.2.5 和聚合 214
5.2.6 值计数聚合 215
5.2.7 统计聚合 215
5.2.8 百分比聚合 215
5.2.9 百分比分级聚合 216
5.2.10 最高命中排行聚合 217
5.2.11 脚本度量聚合 217
5.2.12 地理边界聚合 221
5.2.13 地理重心聚合 222
5.3 分组聚合 223
5.3.1 子聚合 224
5.3.2 直方图聚合 226
5.3.3 日期直方图聚合 230
5.3.4 时间范围聚合 233
5.3.5 范围聚合 234
5.3.6 过滤聚合 235
5.3.7 多重过滤聚合 236
5.3.8 空值聚合 238
5.3.9 嵌套聚合 239
5.3.10 采样聚合 240
5.3.11 重要索引词聚合 242
5.3.12 索引词聚合 245
5.3.13 总体聚合 251
5.3.14 地理点距离聚合 251
5.3.15 地理散列网格聚合 253
5.3.16 IPv4范围聚合 255
5.4 管道聚合 257
5.4.1 平均分组聚合 259
5.4.2 移动平均聚合 261
5.4.3 总和分组聚合 262
5.4.4 总和累计聚合 262
5.4.5 最大分组聚合 264
5.4.6 最小分组聚合 265
5.4.7 统计分组聚合 266
5.4.8 百分位分组聚合 268
5.4.9 差值聚合 269
5.4.10 分组脚本聚合 273
5.4.11 串行差分聚合 275
5.4.12 分组选择器聚合 276
5.5 小结 277
第6章 集群管理 278
6.1 集群节点监控 278
6.1.1 集群健康值 278
6.1.2 集群状态 279
6.1.3 集群统计 280
6.1.4 集群任务管理 280
6.1.5 待定集群任务 281
6.1.6 节点信息 281
6.1.7 节点统计 282
6.2 集群分片迁移 283
6.3 集群节点配置 284
6.3.1 主节点 285
6.3.2 数据节点 286
6.3.3 客户端节点 286
6.3.4 部落节点 287
6.4 节点发现 287
6.4.1 主节点选举 288
6.4.2 故障检测 288
6.5 集群平衡配置 289
6.5.1 分片分配设置 289
6.5.2 基于磁盘的配置 290
6.5.3 分片智能分配 291
6.5.4 分片配置过滤 292
6.5.5 其他集群配置 293
6.6 小结 293
第7章 索引分词器 294
7.1 分词器的概念 294
7.2 中文分词器 298
7.3 插件 300
7.3.1 插件管理 301
7.3.2 插件安装 301
7.3.3 插件清单 302
7.4 小结 304
第8章 高级配置 305
8.1 网络相关配置 305
8.1.1 本地网关配置 305
8.1.2 HTTP配置 306
8.1.3 网络配置 307
8.1.4 传输配置 308
8.2 脚本配置 310
8.2.1 脚本使用 311
8.2.2 脚本配置 313
8.3 快照和恢复配置 318
8.4 线程池配置 324
8.5 索引配置 326
8.5.1 缓存配置 326
8.5.2 索引碎片分配 329
8.5.3 合并 332
8.5.4 相似模块 332
8.5.5 响应慢日志监控 333
8.5.6 存储 335
8.5.7 事务日志 336
8.6 小结 337
第9章 告警、监控和权限管理 338
9.1 告警 338
9.1.1 安装 338
9.1.2 结构 339
9.1.3 示例 352
9.1.4 告警输出配置 354
9.1.5 告警管理 355
9.2 监控 356
9.2.1 安装 356
9.2.2 配置 357
9.3 权限管理 360
9.3.1 工作原理 361
9.3.2 用户认证 361
9.3.3 角色管理 366
9.3.4 综合示例 368
9.4 小结 369
第10章 ELK应用 370
10.1 Logstash 370
10.1.1 配置 371
10.1.2 插件管理 374
10.2 Kibana配置 377
10.2.1 Discover 379
10.2.2 Visualize 381
10.2.3 Dashboard 383
10.2.4 Settings 386
10.3 综合示例 387
10.4 小结 390
附录 Elasticsearch 5.0的特性与改进 391

教学资源推荐
作者: (美)Behrouz A. Forouzan; Firouz Mosharraf 著
作者: [美]拉里·L. 彼得森(Larry L. Peterson),[美]布鲁斯·S. 戴维(Bruce S. Davie) 著
作者: (美)Timothy S.Ramteke
作者: [美] 威廉·斯托林斯(William Stallings) 等 著
参考读物推荐
作者: 陈源 胡慧超 刘蕴如 等著
作者: 王叶 武新华 编著
作者: 陈鸣 常强林 岳振军