ElasticSearch 是基于 Lucene 实现的,所以这里先介绍下 Lucene
Lucene
Lucene 是一个开源,免费,高性能, 纯 Java 实现的全文检索工具包,几乎适用于任何需要全文检索的场景.
但是 Lucene仅仅是一个工具包,它提供了搜索需要的基本元素,但是不能直接用,它不是一个搜索引擎。
我们可以基于 Lucene 来开发出自己的搜索引擎,目前比较成熟的产品有:
- Solr
- ElasticSearch: 在如今的分布式和大数据环境下更牛
ElasticSearch
一个分布式,可扩展,近实时的高性能搜索引擎与数据分析引擎。
ES 同样是基于 Java 开发,并且使用Lucene作为其核心,ElasticSearch 进一步封装了 Lucene,屏蔽了搜索的复杂性.开发者只需要会使用 RESTful 风格的 API 即可.
功能:
- 全文搜索
- 结构化搜索
- 数据分析
当然还可以将以上的三者混合使用
主要特点:
- 分布式的实时的文件存储:将被索引文档的每个字段存入索引,这样里面的字段就可以被检索到.
- 实时分析的分布式搜索: 索引可以被拆成很多个分片,分片还有0到多个副本,集群中的每个数据节点都可以承载分片.
- 高可拓展性:可以扩展到上百台服务器,处理PB级别的结构化或者非结构化数据。
- 生态好,有多种插件可以用.