一、概述
1. Elasticsearch 是什么
以淘宝搜索为例,一个关键字可能对应百万条数据
- 在海量数据中执行搜索功能时,如果使用MySQL,效率太低
- 如果关键字输入的不准确,一样可以搜索到想要的数据
- 搜索的关键字会以红色字体展示
Elaticsearch,简称为 ES,ES 是一个使用Java语言并且基于Lucene编写的搜索引擎框架,它提供了分布式的全文搜索功能,提供了一个统一的基于RESTful风格的web接口,官方客户端也对多种语言都提供了相应的api。
- Lucene:本身就是一个搜索引擎的底层
- 分布式:具有较强的横向拓展能力
- 全文检索:将一段词语进行分词,并且将分出的单个词语统一的放到一个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配的内容
- RESTful风格的web接口:操作ES很简单,只需要发送一个HTTP请求,并且根据请求方式的不同,携带参数的不同,执行相应的功能
2. 全文搜索引擎
3. ES和Solr
Lucene 是 Apache 软件基金会 Jakarta 项目组的一个子项目,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。但 Lucene 只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来进行应用。
目前市面上流行的搜索引擎软件,主流的就两款:Elasticsearch 和 Solr,这两款都是基于 Lucene 搭建的,可以独立部署启动的搜索引擎服务软件。由于内核相同,所以两者除了服务器安装、部署、管理、集群以外,对于数据的操作 修改、添加、保存、查询等等都十分类似。4. 倒排索引