腾讯、阿里巴巴、百度、京东等诸多一线互联网公司正大力推进Elasticsearch的使用场景
《从Lucene到Elasticsearch:全文检索实战》以丰富的实例着重介绍了Elasticsearch的方方面面,可帮助读者快速应用Lucene库处理全文检索业务,掌握使用Elasticsearch搭建分布式搜索引擎的方法与技巧。
《从Lucene到Elasticsearch:全文检索实战》是编者在信息检索、Lucene和Elasticsearch学习、实际项目实践过程中的心得体会和经验总结。本书从原理到实践,涉及的内容包括信息检索的核心概念、Lucene架构、使用Lucene创建索引和索引查询、Elasticsearch入门、Elasticsearch基本搜索、Elasticsearch高级搜索、Elasticsearch Java API、Elasticsearch同步数据库、Elasticsearch集群管理、Lucene与Elasticsearch项目实战等。、
针对初级开发者,可以通过本书提供的众多实例入手,循序渐进,由点到面地进行学习;另外,《从Lucene到Elasticsearch:全文检索实战》的每个实例都提供了可执行程序与详尽的代码注解,从而有效降低学习门槛,提高学习效率。
对于有编程经验的开发者通过学习本书,可以用Lucene和Elasticsearch解决工作中的问题,增强业务处理能力,实现独立开发信息检索系统的目标。
《从Lucene到Elasticsearch:全文检索实战》循序渐进介绍了信息检索、布尔检索、向量空间模型、tf-idf、BM25排序算法、Lucene架构、Lucene创建索引、Lucene查询、Lucene项目实战、Elasticsearch安装与配置、Elasticsearch插件安装、REST API数据操作、映射与模板、索引别名、Elasticsearch基本和高级搜索、Elasticsearch同步数据库、Elasticsearch集群管理、项目实战等内容。
阅读《从Lucene到Elasticsearch:全文检索实战》,读者能够掌握信息检索的核心概念,应用Lucene库处理全文检索业务,掌握Elasticsearch分布式搜索引擎的使用方法与技巧。
《从Lucene到Elasticsearch:全文检索实战》基于Lucene 6.0和Elasticsearch 5.4.0进行讲解,技术先进,示例丰富
适合想学习信息检索技术的初学者和相关专业的大学生、研究生学习,也很适合大数据及云计算平台构建人员以及有一定基础的IT开发人员使用。
姚攀:中国科学院大学硕士,擅长j2ee开发,对搜索引擎技术有浓厚的兴趣和较深入研究,有丰富的Lucene和ElasticSearch开发经历和项目经验,活跃于CSDN社区,目前在一家公司做ES搜索业务开发。
目 录
第1章 信息检索模型 1
1.1 信息检索概述 1
1.1.1 信息过载 1
1.1.2 信息检索定义 2
1.1.3 信息检索常用术语 3
1.1.4 信息检索系统 4
1.2 分词算法 5
1.2.1 分词算法概述 5
1.2.2 词典匹配分词法 6
1.2.3 语义理解分词法 6
1.2.4 词频统计分词法 7
1.3 倒排索引 7
1.4 布尔检索模型 9
1.5 tf-idf权重计算 11
1.6 向量空间模型 13
1.7 概率检索模型 16
1.7.1 贝叶斯决策理论 17
1.7.2 二值独立模型 18
1.7.3 Okapi BM25模型 20
1.7.4 BM25F模型 20
1.8 本章小结 21
第2章 Lucene开发入门 22
2.1 Lucene概述 22
2.1.1 Lucene简介 22
2.1.2 Lucene特点 22
2.1.3 Lucene架构 23
2.2 Lucene开发准备 25
2.2.1 下载Lucene文件库 25
2.2.2 工程中引入Lucene 26
2.2.3 下载Luke 27
2.2.4 下载IK分词工具 28
2.2.5 工程搭建 29
2.3 Lucene分词详解 30
2.3.1 Lucene分词系统 30
2.3.2 分词器测试 31
2.3.3 IK分词器配置 34
2.3.4 中文分词器对比 36
2.3.5 扩展停用词词典 38
2.3.6 扩展自定义词典 38
2.4 Lucene索引详解 40
2.4.1 Lucene字段类型 40
2.4.2 索引文档示例 41
2.4.3 Luke中查看索引 46
2.4.4 索引的删除 48
2.4.5 索引的更新 49
2.5 Lucene查询详解 50
2.5.1 搜索入门 51
2.5.2 多域搜索(MultiFieldQueryParser) 52
2.5.3 词项搜索(TermQuery) 53
2.5.4 布尔搜索(BooleanQuery) 53
2.5.5 范围搜索(RangeQuery) 54
2.5.6 前缀搜索(PrefixQuery) 55
2.5.7 多关键字搜索(PhraseQuery) 55
2.5.8 模糊搜索(FuzzyQuery) 55
2.5.9 通配符搜索(WildcardQuery) 56
2.6 Lucene查询高亮 56
2.7 Lucene新闻高频词提取 58
2.7.1 问题提出 58
2.7.2 需求分析 58
2.7.3 编程实现 58
2.8 本章小结 61
第3章 Lucene文件检索项目实战 62
3.1 需求分析 62
3.2 架构设计 63
3.3 文本内容抽取 64
3.3.1 Tika简介 64
3.3.2 Tika下载 64
3.3.3 搭建工程 65
3.3.4 内容抽取 66
3.3.5 自动解析 68
3.4 工程搭建 71
3.5 索引文档 72
3.6 查询界面 75
3.7 文件检索 77
3.8 结果展示 80
3.9 本章小结 85
第4章 从Lucene到Elasticsearch 86
4.1 Elasticsearch概述 86
4.1.1 诞生过程 86
4.1.2 流行度分析 88
4.1.3 架构解读 89
4.1.4 优点 89
4.1.5 应用场景 90
4.1.6 核心概念 92
4.1.7 对比RDMS 94
4.1.8 文档结构 94
4.2 安装Elasticsearch 95
4.2.1 安装Java 96
4.2.2 下载Elasticsearch 97
4.2.3 启动Elasticsearch 97
4.2.4 后台运行Elasticsearch 99
4.2.5 关闭Elasticsearch 99
4.2.6 基本配置 100
4.3 中文分词器配置 101
4.3.1 IK分词器安装 101
4.3.2 扩展本地词库 102
4.3.3 配置远程词库 103
4.4 Head插件使用指南 105
4.4.1 Head插件的安装 105
4.4.2 Head插件的使用 107
4.5 REST命令 109
4.5.1 CURL工具 110
4.5.2 Kibana Dev Tools 111
4.6 本章小结 112
第5章 Elasticsearch集群入门 113
5.1 索引管理 113
5.1.1 新建索引 113
5.1.2 更新副本 115
5.1.3 读写权限 115
5.1.4 查看索引 116
5.1.5 删除索引 117
5.1.6 索引的打开与关闭 118
5.1.7 复制索引 118
5.1.8 收缩索引 119
5.1.9 索引别名 120
5.2 文档管理 123
5.2.1 新建文档 123
5.2.2 获取文档 125
5.2.3 更新文档 127
5.2.4 查询更新 129
5.2.5 删除文档 129
5.2.6 查询删除 130
5.2.7 批量操作 130
5.2.8 版本控制 133
5.2.9 路由机制 136
5.3 映射详解 137
5.3.1 映射分类 137
5.3.2 动态映射 138
5.3.3 日期检测 140
5.3.4 静态映射 141
5.3.5 字段类型 142
5.3.6 元字段 156
5.3.7 映射参数 162
5.3.8 映射模板 180
5.4 本章小结 181
前 言
我们正处在一个大数据时代,大数据并不仅仅是指海量数据,而更多的是指这些数据都是非结构化的、无法用传统的方法进行处理的数据。相信很多人听说过目前在云计算和大数据领域里如日中天的Hadoop,Hadoop的发起人之一是大名鼎鼎的Doug Cutting。早在Hadoop诞生之前,Doug Cutting已经用Java实现了第一个提供全文文本搜索的开源函数库 Lucene。Lucene自2000年发布第一个开源版本以来,在开源社区引起了很大的反响,为广大开发者提供了研发全文检索系统的利器。Lucene作为Apache的顶级项目,有大量研发人员贡献源码,经过十几年的发展,目前Lucene已经十分成熟,可以说Lucene是当今最先进、最高效的全功能开源搜索引擎工具包。但Lucene只是一个全文检索类库,Elasticsearch是一个建立在Lucene基础上的实时的分布式搜索引擎,2010年由Shay Bano发布。相比于Lucene,Elasticsearch功能更加强大,使用更加方便。
站在巨人的肩膀上,入门搜索技术并不困难,本书为入门Lucene、Elasticsearch而生。本书首先介绍信息检索领域中的一些基本理论,也就是Lucene的数学模型,之后介绍如何使用Lucene库构建全文检索系统,最后介绍Elasticsearch。本书按照从数学模型到入门基础再到项目实战的思路来编写,数学模型让读者知其然也知其所以然,入门基础是理论到实际应用的必经之路,项目实战则是为了学以致用。书中的每一部分都力图简明扼要,使用大量实例和代码,为读者能够快速掌握全文检索技术扫除障碍。将全文检索领域中的一些知识和项目经验分享给大家,是笔者写作本书的初衷。
本书结构
本书从逻辑上可划分为三部分。
第一部分(第1章),主要介绍信息过载、信息检索、倒排索引、布尔模型、tf-idf、向量空间模型、概率检索模型等信息检索领域的基础知识。
第二部分(第2和3章),介绍如何使用Lucene开发全文检索系统。
第2章主要介绍Lucene的基础知识,内容包括Lucene的特点、Lucene架构、Luke的使用、IK分词器配置、扩展词库和远程词库的配置、Lucene的多种分词器、索引的构建方法、检索文档以及实现检索关键词高亮的方法。
第3章是Lucene项目实战部分,介绍如何使用Lucene构建一个文件检索系统,内容包括项目的整体设计、使用Tika做信息抽取、索引的构建、用户查询界面的设计与实现、用户查询处理、搜索结果展示等内容。
第三部分(第4~11章),主要介绍Elasticsearch分布式搜索引擎的相关技术。
第4章是Elasticsearch简介,内容包括Elasticsearch与Lucene的关系、Elasticsearch的整体架构、核心概念、在企业中的应用案例、流行度趋势、Elasticsearch的安装、中文分词配置以及相关插件的安装与使用。
第5章是Elasticsearch集群入门,主要内容包括索引管理、文档管理和映射详解。
第6章介绍Elasticsearch的搜索功能,主要内容包括搜索机制的解读、全文查询、词项查询、复合查询、嵌套查询、位置查询、特殊查询、搜索高亮和排序。
第7章介绍Elasticsearch的聚合分析功能。
第8章介绍如何使用Elasticsearch Java API做二次开发。
第9章介绍Elasticsearch集群管理的相关知识点,包括脑裂问题、集群规划、索引规划、分布式集群的搭建方法以及如何查看集群的监控信息。
第10章是Elasticsearch整合MySQL项目实战部分,通过实现对MySQL中的数据进行全文检索这一需求,贯穿了MySQL、JDBC、Elasticsearch Java API以及Java Web的相关知识,使读者了解在实际的项目开发中使用Elasticsearch做全文搜索的方法。
第11章介绍Elasticsearch和Hadoop大数据平台交互的方法。
学习本书的预备知识
Java基础
首先要配置好Java开发环境。不论是学习Lucene还是Elasticsearch都需要安装好Java环境,Elasticsearch的运行要求JDK版本最低为1.7,建议使用JDK 1.8及以上版本。鉴于Java的跨平台特性,对操作系统没有要求,在Windows、Linux、Mac OS X系统上都可以运行Elasticsearch。除此之外,读者需要掌握Java基础知识。
Java Web开发技术
在项目实战中需要用到Java Web的相关技术,建议读者在阅读本书之前掌握HTML、CSS、JSP等基础知识,掌握Java Web项目的部署和运行。
本书使用的软件版本
本书基于Lucene 6.0和Elasticsearch 5.4.0进行讲解,集成开发环境为Eclipse 4.6.1。
读者对象
在校学生
如果你是正在大学校园里修读计算机科学相关专业的大学生,也许你正在选修程序设计语言,课程结束了你发现自己只能写出命令行下黑白屏显示的小程序,你也许很期待学到更多的技术做出实际的项目,那么本书就是为你准备的。书中的项目使用的是Java语言,除了Lucene和Elasticsearch的使用之外,还穿插了Java SE、Java Web的相关技术。
Java程序开发者
如果你是已经参加工作的Java程序开发者,想要掌握全文检索相关技术却不知道从哪里入手,需要处理企业中的全文检索业务却没有思路,你也许听说过Lucene或Elasticsearch,但是不知道怎样快速入门,那么本书可以作为入门全文检索、学习Lucene和Elasticsearch开发技术的参考书。
搜索引擎研发人员
如果你是搜索引擎研发者,本书中的实际案例和相关知识点可以作为参考资料,比如信息检索模型理论基础、文档信息抽取、Lucene应用案例、Elasticsearch Java API、Elasticsearch集群管理等。希望能以本书为媒介和大家共同探讨和交流。
源代码下载
源代码下载地址:http://pan.baidu.com/s/1slHRM5f(注意区分数字和英文字母的大 小写)
勘误与交流
限于笔者水平和写作时间有限,不可避免地会有些疏漏之处,欢迎大家通过电子邮件等方式批评指正。
笔者的邮箱:ucasyp@163.com
笔者的博客:blog.csdn.net/napoay
致谢
本书能够顺利出版要感谢很多单位和个人。首先要感谢笔者的家人,他们对笔者学业的支持和生活的照顾使笔者没有后顾之忧,全身心投入到本书的写作当中。
感谢北京博瑞开源有限公司,公司给笔者提供了宝贵的实习机会,本书的很多知识点都来源于实际项目,是在解决实际问题过程中的经验总结,感谢公司董事长李小翔先生、架构师黄超对笔者的指导和帮助。
感谢马玉鹏老师、郎睿师兄、张港红博士、CSDN博主周程(blog.csdn.net/fxsdbt520)、秦雪箭、宗鹏、陆风光在本书写作过程中的帮助和支持。
感谢清华大学出版社给了笔者一次和大家分享技术、交流学习的机会,感谢王金柱编辑在本书出版过程的辛勤付出。
姚 攀
2017年10月9日
这本《从Lucene到Elasticsearch:全文检索实战》给我的感觉,更像是一次深入的“解剖课”,让我有机会一窥全文检索技术的内部奥秘。作者以非常细致的笔触,从 Lucene 的基本构建块开始,一步步剖析了全文检索的核心机制。我尤其对书中关于倒排索引是如何构建的讲解印象深刻,那些关于词项、文档、位置信息的关联,仿佛在我脑海中构建了一个清晰的图像。理解了 Lucene 的工作原理,再去看 Elasticsearch 又是如何在这个基础上进行封装和扩展的,就变得顺理成章。书中对于 Elasticsearch 在分布式架构、数据分片、副本机制以及集群管理方面的介绍,都非常到位,并且能够结合 Lucene 的特性进行解读,让我能够从更宏观的角度理解整个系统的设计思路。我注意到作者在讲解过程中,并没有回避一些技术细节,反而将其作为重点来阐述,这对于真正想要掌握这项技术的读者来说,无疑是极大的福音。这本书不仅教会了我如何使用 Elasticsearch,更让我理解了其背后的“为什么”,这对于我日后进行更深入的开发和优化,提供了坚实的基础。
评分我一直认为,要真正掌握一项技术,就必须理解它的根基。而这本《从Lucene到Elasticsearch:全文检索实战》恰恰满足了我的这个需求。作者并没有急于展示 Elasticsearch 的各种炫酷功能,而是将我们带回到了 Lucene 的世界。通过对 Lucene 核心概念,例如倒排索引、词项字典、文档向量等内容的深入讲解,我才真正理解了全文检索的底层原理。这种“追本溯源”的学习方式,让我对后续学习 Elasticsearch 拥有了更加扎实的基础。书中对不同分词策略的比较分析,对索引性能优化的技巧,以及对查询语言的细致解读,都给我留下了深刻的印象。特别是在处理复杂查询、模糊搜索、相关性排序等方面,作者提供的实践指导非常有价值。我喜欢书中这种严谨的学术态度,但同时又不失工程实践的落地性。它就像一位经验丰富的老师,耐心地引导我一步步走入全文检索的殿堂,让我能够理解 Elasticsearch 为什么能够提供如此强大的搜索能力,以及如何才能更有效地利用它。对于任何想要深入理解全文检索技术,而不是仅仅停留在API调用的开发者来说,这本书无疑是开启一段精彩旅程的钥匙。
评分老实说,我一直对全文检索这个领域有些敬畏,感觉它既神秘又强大。收到这本《从Lucene到Elasticsearch:全文检索实战》时,我抱着学习的心态,但很快就被书中深入浅出的讲解所折服。作者并没有直接跳到 Elasticsearch 的高级功能,而是循序渐进地从 Lucene 这个基础框架讲起,这对我来说至关重要。理解了 Lucene 的核心概念,再去看 Elasticsearch 的各种组件,就如同拆解积木一样,一切都变得清晰起来。书中对索引构建的细节,如分词器的选择、索引优化策略,都进行了非常详尽的阐述,这对于保证搜索的准确性和效率有着决定性的影响。我特别欣赏作者在讲解过程中穿插的实际案例和代码示例,这使得抽象的技术概念变得具体可行,让我可以边学边练,快速掌握核心要点。此外,书中对于 Elasticsearch 的分布式架构、集群管理、高可用性等方面的介绍,也为我构建更具扩展性和鲁棒性的搜索服务奠定了坚实的基础。总而言之,这本书是我在全文检索领域的一次“顿悟”,它不仅教会了我“怎么做”,更让我理解了“为什么这么做”,这对于一个开发者来说,价值是无法衡量的。
评分这是一本绝对值得深入研读的书籍,尽管我才刚刚翻开,就被它宏大的技术视野和精妙的编排所吸引。作者似乎是一位经验丰富的老兵,将那些看似遥不可及的底层原理,用一种通俗易懂却又不失严谨的方式娓娓道来。我尤其喜欢其中对于 Lucene 内部运作机制的细致剖析,那些关于倒排索引、文档结构、词项字典的讲解,简直就像是在解剖一个精密的机器,让我这个初学者也能窥见其核心的逻辑。书中对于性能优化的探讨也让我眼前一亮,从分片到副本,再到查询的优化策略,都为我们这些希望构建高性能搜索系统的开发者提供了宝贵的参考。我迫不及待地想要探索 Elasticsearch 在此基础上的演进,尤其是它如何将 Lucene 的强大能力封装得如此易于使用,并提供了如此丰富的分布式特性。这本书不仅仅是知识的堆砌,更是一种思维的启迪,让我开始重新审视“搜索”这个概念,以及背后蕴含的巨大潜力。对于任何一个对信息检索技术感兴趣的开发者来说,这无疑是一本不可错过的入门和进阶指南,甚至对于一些经验丰富的技术人员,也能从中获得新的启发。
评分这本书不仅仅是一本技术手册,更像是一次从底层到上层的技术溯源之旅。作者非常有远见地将 Lucene 作为起点,带领读者深入理解了全文检索最核心的原理。对于我来说,理解倒排索引的构建过程、词项的存储方式,以及文档与词项之间的关联,是理解整个搜索机制的关键。书中对于 Lucene 的 API 和数据结构的讲解,非常详尽,让我能够清晰地看到数据是如何被索引和检索的。在此基础上,作者又将目光转向了 Elasticsearch,阐述了它如何基于 Lucene 构建了一个强大的分布式搜索平台。我尤其欣赏书中对于 Elasticsearch 的集群管理、数据同步、故障转移等方面进行的系统性介绍,这些内容对于构建稳定可靠的搜索服务至关重要。而且,作者在讲解过程中,常常会穿插一些实际应用场景的分析,这使得抽象的技术概念变得更加生动和易于理解。总的来说,这本书为我打开了一个全新的视野,让我不再仅仅满足于调用现成的 API,而是能够更深入地理解全文检索技术的本质,并能够灵活运用它来解决实际问题。
评分清华大学的《tensorflow深度学习应用实践》,看了目录就知道且实是我需要的书,赞一个
评分优惠力度大 好好看看学习学习 快递挺好
评分趁优惠买一些学习
评分不错的商品和服务质量,推荐给大家分享一下我的感受……不错的商品和服务质量,推荐给大家分享一下我的感受……
评分新技术,新书,希望可以说明白!
评分不错 书很好 希望读完能有帮助
评分很实用,讲解的比较清楚,不需要太多基础。
评分内容不错,入门学elasticsearch挺好的,天咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯啦咯
评分物美价廉,书本都是正版的
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有