现在,我们已经学会了如何使用ELasticsearch作为一个简单的NoSQL风格的分布式文档存储系统。我们可以将一个JOSN文档扔到Elasticsearch里,然后根据ID 检索。但Elasticsearch真正强大之处在于可以从无规律的数据中找出有意义的信息——从“大数据”到“大信息”。
Elasticsearch不止会存储(stores)文档,为了能被搜索到也会为文档添加索引(indexes),这也是为什么我们使用结构化的JSON 文档,而不是无结构的二进制数据。
文档中的每个字段都将被索引并且可以被查询。不仅如此,在简单查询中,Elasticsearch可以使用所有(all)这些索引字段,以惊人的速度返回结果。这是你永远不会考虑用传统数据库去做的一些事情。
搜索(search)可以做到:
- 在类似于
gender或者age这样的字段上使用结构化查询,join_date这样的字段上使用排序,就像SQL的结构化查询一样。 - 全文检索,找出所有匹配关键字的文档并按照相关性(relevance)排序后返回结果。
- 以上二者兼而有之
很多搜索都是开箱即用,为了充分挖掘Elasticsearch 的潜力,你需要理解以下三个概念:
映射(Mapping)
分析(Analysis)
领域特定查询语言(Query DSL)
Elasticsearch中强大灵活的查询语言
以上提到的每个点都是一个大话题,我们将在深入搜索 一章详细阐述他们。本章节我们将介绍这三点的一些基本概念——仅仅帮助你大致了解搜索是如何工作的。
测试数据
本章节的测试数据可以在这里找到: https://gist.github.com/clintongormley/8579281。
你可以把这些命令复制到终端中执行来实践本章的例子。
另外,如果你读的是在线版本,可以 点击这个链接 感受下。
