内容简介
本书基于ElasticSearch的0.2版本,覆盖了ElasticSearch各种功能和命令的应用,全面、详细地介绍了开源、分布式、RESTful,具有全文检索功能的搜索引擎ElasticSearch。
本书前两章着重介绍了ElasticSearch的基本功能和用法,包括ElasticSearch的安装和配置、REST API的使用方法,以及怎样使用Query DSL语句进行查询、过滤、排序等。接下来的4章是对ElasticSearch基本功能的扩展,主要介绍了如何使用统计功能来计算查询返回结果的聚集数据、如何实现自动补全功能、如何使用ElasticSearch的空间数据处理能力,以及如何使用预期搜索功能等。第7章介绍了ElasticSearch管理API的能力,如控制分片部署位置、操纵集群等功能。在第8章将学习到如何处理使用ElasticSearch过程中可能遇到的常见问题。
本书内容丰富、全面,基本概念的讲解细致、深入浅出。各种功能和命令的介绍,都配以实践操作和详细的代码。
目录
第1章 ElasticSearch集群入门
1.1 什么是ElasticSearch
1.1.1 索引
1.1.2 文档
1.1.3 文档类型
1.1.4 节点和集群
1.1.5 分片
1.1.6 副本
1.2 安装和配置ElasticSearch集群
1.3 目录结构
1.4 配置ElasticSearch
1.5 运行ElasticSearch
1.6 关闭ElasticSearch
1.7 作为系统服务运行ElasticSearch
1.8 基于REST API的数据操作
1.8.1 什么是REST
1.8.2 在ElasticSearch中存储数据
1.8.3 创建新文档
1.8.4 检索文档
1.8.5 更新文档
1.8.6 删除文档
1.9 手工创建索引与配置映射
1.9.1 索引
1.9.2 文档类型
1.9.3 索引操作
1.9.4 模式映射
1.10 动态映射和模板
1.10.1 类型确定机制
1.10.2 动态映射
1.10.3 模板
1.11 路由选择的重要性
1.11.1 如何进行索引
1.11.2 搜索是如何工作的
1.11.3 路由选择
1.11.4 routing参数
1.11.5 _routing字段
1.12 索引别名及其用途
1.12.1 别名的定义
1.12.2 创建别名
1.12.3 修改别名
1.12.4 两种命令的组合
1.12.5 获得所有的别名
1.12.6 过滤别名
1.12.7 别名和路由选择
1.13 本章小结
第2章 搜索数据
2.1 查询和索引的过程
2.2 本章案例使用的映射
2.3 查询ElasticSearch
2.3.1 简单查询
2.3.2 分页和结果规模
2.3.3 返回版本号
2.3.4 限制结果分数
2.3.5 指定返回字段
2.3.6 使用script_fields
2.3.7 选择合适的搜索类型(选项)
2.3.8 指定搜索执行的位置(选项)
2.4 基本查询
2.4.1 term查询
2.4.2 terms查询
2.4.3 match查询
2.4.4 multi_match查询
2.4.5 query_string查询
2.4.6 field查询
2.4.7 ids查询
2.4.8 prefix查询
2.4.9 fuzzy_like_this查询
2.4.10 fuzzy_like_this_field查询
2.4.11 fuzzy查询
2.4.12 match_all查询
2.4.13 wildcard查询
2.4.14 more_like_this查询
2.4.15 more_like_this_field查询
2.4.16 range查询
2.4.17 查询重写
2.5 过滤查询结果
2.5.1 使用过滤器
2.5.2 range过滤器
2.5.3 exists过滤器
2.5.4 missing过滤器
2.5.5 script过滤器
2.5.6 type过滤器
2.5.7 limit过滤器
2.5.8 ids过滤器
2.5.9 其他功能
2.5.10 bool、and、or和not过滤器
2.5.11 过滤器的命名
2.5.12 过滤器的缓存
2.6 复合查询
2.6.1 bool查询
2.6.2 boosting查询
2.6.3 constant_score查询
2.6.4 indices查询
2.6.5 custom_filters_score查询
2.6.6 custom_boost_factor查询
2.6.7 custom_score查询
2.7 数据排序
2.7.1 默认排序
2.7.2 选择用于排序的字段
2.7.3 指定缺失字段的行为
2.7.4 动态标准
2.7.5 排序归类和不同国家的字符
2.8 使用脚本
2.8.1 脚本中可用的对象
摘要与插图
序Cool,这是国内第一本介绍ElasticSearch的书!
电子工业出版社邀请我来为这本书作序,荣幸也惭愧。本人2年掉“创业坑”里面不能自拔,每天忙碌于各种琐事,为ElasticSearch社区所做贡献实在不多。
在讨论组中,经常有人跟我抱怨:ElasticSearch的中文资料实在是太少了,官方的文档不完整。还有很多人说英文的文档看起来太费劲了。我曾经尝试将官方的guide翻译成中文,但无奈工作繁忙且精力有限,翻译了几个章节,然后就没有然后了。本书的出版,对于广大ElasticSearch爱好者来说是一个喜讯,相信本书的出版对于ElasticSearch的进一步普及也会带来很好的帮助。
这本书适合初学者阅读和参考。作者先从介绍常用API的使用开始,由浅入深,随着后面的不断深入,不仅详细介绍了ElasticSearch的各种搜索特性和查询语法(ElasticSearch真的很强大啊),而且对性能优化和集群管理也做了很多细致的介绍。书中不仅介绍了在使用ElasticSearch过程中可能会遇到的各种问题及相对应的解决办法,更难能可贵的是还给出了出现这些问题的原因及其背后的原理。相信就算是对搜索及ElasticSearch有过一定了解的同学也能在这本书里面学到很多东西。
本人接触ElasticSearch不多不少也有4个年头了,亲眼见证了这个产品的飞速发展。ElasticSearch已经从的分布式搜索引擎发展成为如今大数据时代下杰出的实时数据分析的解决方案。ElasticSearch旗下的产品线也在不断地丰富、完善,越来越多的公司和个人都开始考虑使用ElasticSearch作为其用于搭建企业搜索和数据分析工具的选。可以说ElasticSearch的前景一片光明。而我本人对于ElasticSearch的作者ShayBanon也是敬佩的。我接触ElasticSearch比较早,那个时候ElasticSearch还刚release没多久,遇到使用上的各种问题都能在IRC聊天室或者邮件组里面很快得到Shay的飞速响应和耐心解答。另外,ElasticSearch的很多设计理念现在看来都是很的并且还在一直不断地进步,真心很“赞”。
这本书针对ElasticSearch的版本是0.20.2。无奈ElasticSearch版本更新太快,尤其是1.0以后,ElasticSearch推出了很多新的功能,如aggregation、snapshot等,但也有一些旧功能的废除,甚至还有一些API的变动。这些在本书中可能都没有涉及;不过不要紧,版本变化不可避免,书也很难做到同步,有问题多去社区交流就好了。:)
Medcl,ElasticSearch中文社区发起人,目前在医树网负责后端及运维工作
译者序
大数据时代已经到来,数据规模正在以的速度迅速增长。Lucene是许多互联网公司的标准搜索引擎,但无法在一个合理的时间内存储和检索如此海量的数据,因而不适合大数据和云计算环境。计算机体系结构在数据存储和搜索方面要求具备强大的水平扩展性,而ElasticSearch致力于改变这一现状。ElasticSearch因其自身快速、灵活和可扩展的特点在大数据时代得到了迅速的发展。开发的软件只要换上新一代的搜索引擎搜索数据,即可获得性能上的突飞猛进。ElasticSearch提供了的可扩展框架,以支持大数据程序设计的需求。
ElasticSearch是一个基于Lucene内核构建的,具有开源、分布式、RESTful等特点的搜索引擎,能够实时搜索,稳定并且可靠。本书全面丰富地介绍了ElasticSearch搜索引擎。无论你是需要全文搜索、结构化数据的实时统计,还是两者的结合,本书都会帮助你了解其中本的概念,从本的操作开始学习。然后,逐渐开始探索更加复杂的功能,如过滤、统计、高亮、反查等。
本书鲜明,作者在介绍ElasticSearch时,仿佛是在跟朋友