分布式搜索 ES
- Elasticsearch 简称为 ES, 是一个
开源
的可扩展
的分布式
的全文检索引擎
。 - ES 使用
Java
开发并使用Lucene
作为其核心来实现索引和搜索的功能。 - 它通过简单的
RestfulAPI
和JavaAPI
来隐藏Lucene
的复杂性
,从而让全文搜索变得简单。
ES 官网:https://www.elastic.co/cn/elasticsearch/
ES 常见的使用场景
- 搜索类场景。
- 日志分析类场景。
- 数据预警平台及数据分析场景。
ES 使用情况
- 维基百科、百度百科
- stack overflow
- github
- 京东
- 今日头条
- ...
全文搜索方案对比
Lucene
- Lucene 是
Apache
基金会维护的一套完全使用 Java 编写的信息搜索工具包(Jar包) - Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
- 想要使用 Lucene,必须使用 Java 来作为开发语言并将其直接集成到你的应用中,并且 Lucene 的配置及使用非常复杂。
- 不支持集群环境。
Solr
- Solr 是一个有 HTTP 接口的基于 Lucene 的查询服务器,是一个搜索引擎系统。
- 封装了很多 Lucene 细节,Solr 可以直接利用 HTTP GET/POST 请求去查询,维护修改索引。
- Solr 利用 Zookpper 进行分布式管理。
- 单纯的对已有数据进行搜索时,对于一开始固定的数据 Solr 更快,对于实时产生的数据的时候, solr 会产生 io 阻塞, 查询性能比较差。
Elasticsearch
- Elasticsearch 也是一个建立在全文搜索引擎
Apache Lucene
基础上的搜索引擎。 - Elasticsearch 自身带有
分布式协调
管理功能。 - 当实时建立索引时, Solr 会产生 io 阻塞,查询性能较差, Elasticsearch 会具有明显的优势。