本书考虑到Elasticsearch在工程中的实际应用,介绍使用Elasticsearch开发支持中文和英文搜索引擎,实现系统监控。
本书分为8章,内容涵盖了Elasticsearch开发搜索引擎、开发中文搜索引擎、Mapping详解、源代码分析、提高搜索相关性、使用SpringBoot开发搜索界面、管理Elasticsearch集群和具体的案例分析。
本书可以作为软件工程师学习参考书,也可以作为高等院校信息检索课程的教学参考书,或者SEO搜索引擎优化,搜索引擎用户的参考书。
封面图
目录
- 前言
- 第1章 Elasticsearch开发搜索引擎应用1
- 1.1 搜索引擎开发需求1
- 1.2 准备开发环境1
- 1.2.1 Windows命令行cmd1
- 1.2.2 在Windows下使用Java3
- 1.2.3 Linux终端5
- 1.2.4 在Linux下使用Java9
- 1.2.5 Eclipse集成开发环境10
- 1.3 了解Elasticsearch10
- 1.3.1 JSON数据格式11
- 1.3.2 Elasticsearch基本概念12
- 1.3.3 HTTP协议13
- 1.4 Elasticsearch安装和配置16
- 1.4.1 安装Elasticsearch16
- 1.4.2 运行Elasticsearch作为服务进程19
- 1.5 实现一个简单的网站搜索21
- 1.5.1 定义索引结构23
- 1.5.2 导入数据26
- 1.5.3 查询API27
- 1.5.4 实现搜索界面29
- 1.6 本章小结35
- 第2章 开发中文搜索引擎36
- 2.1 中文分词原理36
- 2.1.1 最长匹配方法36
- 2.1.2 自己写分析器42
- 2.1.3 概率语言模型的分词方法44
- 2.1.4 中文分词插件原理52
- 2.1.5 开发中文分词插件54
- 2.1.6 支持Elasticsearch的插件57
- 2.1.7 中文分析器提供者59
- 2.1.8 字词混合索引61
- 2.2 提高分词准确度63
- 2.3 本章小结65
- 第3章 Mapping详解66
- 3.1 索引模式66
- 3.1.1 创建模式66
- 3.1.2 修改模式68
- 3.2 Mapping数据类型69
- 3.3 Mapping参数70
- 3.4 动态Mapping71
- 3.4.1 使用动态Mapping72
- 3.4.2 实现原理72
- 3.5 本章小结74
- 第4章 深入源码分析75
- 4.1 Lucene源码分析75
- 4.1.1 使用Lucene75
- 4.1.2 Ivy管理依赖项77
- 4.1.3 源码结构介绍77
- 4.1.4 并发控制82
- 4.2 启动搜索服务88
- 4.3 Guice框架89
- 4.4 日期和时间库——Joda-Time91
- 4.5 Transport模块91
- 4.6 线程池92
- 4.7 模块93
- 4.8 Netty通信框架93
- 4.9 缓存94
- 4.10 分布式95
- 4.11 Zen发现机制95
- 4.12 联合搜索97
- 4.13 JVM字节码98
- 4.13.1 编译代码99
- 4.13.2 同步相关指令99
- 4.14 本章小结100
- 第5章 提高搜索相关性102
- 5.1 向量空间检索模型102
- 5.2 BM25检索模型105
- 5.2.1 使用BM25检索模型108
- 5.2.2 参数调优108
- 5.3 学习评分109
- 5.3.1 基本原理109
- 5.3.2 准备数据110
- 5.3.3 Elasticsearch学习排名112
- 5.4 查询意图识别112
- 5.5 图像特征提升检索体验113
- 5.6 本章小结116
- 第6章 搜索界面开发118
- 6.1 使用Searchkit实现搜索界面118
- 6.2 Spring Boot入门122
- 6.2.1 可执行的WAR125
- 6.2.2 spring-boot-devtools模块实现热部署136
- 6.3 Java模板引擎Pebble介绍136
- 6.4 通过Spring-data-elasticsearch 项目访问Elasticsearch141
- 6.5 REST基本概念149
- 6.6 使用Vue.js开发搜索界面154
- 6.7 使用Vue.js Paginator插件实现翻页157
- 6.8 实现搜索接口161
- 6.8.1 编码识别161
- 6.8.2 布尔搜索163
- 6.8.3 搜索结果重定向164
- 6.8.4 搜索结果排序165
- 6.8.5 实现相似文档搜索166
- 6.9 Suggester搜索词提示167
- 6.9.1 拼音提示169
- 6.9.2 部署总结169
- 6.9.3 相关搜索170
- 6.9.4 再次查找172
- 6.9.5 搜索日志172
- 6.10 Word2vec挖掘相关搜索词174
- 6.11 部署网站179
- 6.11.1 部署到Web服务器179
- 6.11.2 防止攻击181
- 6.12 使用Rust开发搜索界面184
- 6.13 本章小结184
- 第7章 Elastic栈系统监控186
- 7.1 管理Elasticsearch集群186
- 7.1.1 写入权限控制187
- 7.1.2 使用X-Pack188
- 7.1.3 快照189
- 7.2 Logstash数据处理工具190
- 7.2.1 使用Logstash190
- 7.2.2 插件192
- 7.2.3 数据库输入插件192
- 7.2.4 开发插件193
- 7.3 Filebeat文件收集器193
- 7.4 消息过期194
- 7.5 Kibana可视化平台195
- 7.6 Flume日志收集系统196
- 7.7 Kafka分布式流平台197
- 7.8 Graylog日志管理平台198
- 7.9 本章小结202
- 第8章 案例分析204
- 8.1 双语句对搜索204
- 8.1.1 爬虫抓取双语句对204
- 8.1.2 英文分词205
- 8.1.3 句子切分205
- 8.1.4 标注词性207
- 8.1.5 词对齐209
- 8.1.6 索引数据213
- 8.2 内容管理系统站内检索214
- 8.2.1 MySQL数据库214
- 8.2.2 RESTful API管理索引215
- 8.2.3 自动客服机器人217
- 8.3 搜索文档225
- 8.3.1 爬虫抓取信息225
- 8.3.2 在Linux下使用.NET233
- 8.3.3 NEST客户端235
- 8.4 本章小结239
- 参考文献240