Elasticsearch 简介及原理
1、简介
- Elasticsearch是一个分布式可扩展的实时搜索和分析引擎。是一个建立在全文搜索引擎Apache Lucene(TM)
基础上的搜索引擎。Elasticsearch是面向文档型的数据库,一条 数据就是一个文档,用json作为文档序列化的格式。Elasticsearch并不仅仅是Lucene那么简单,它不仅包含了全文搜索功能,还有一下特点:
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
- 实时分析的分布式搜索引擎
- 可以扩展到上百台服务器,处理PB级别的结构化和非结构话的数据
PB(petabyte):高级的存储单元,1PB=1024TB
结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据
非结构化数据:不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等
2、Elasticsearch和关系型数据术语对照表
关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)
3、Lucene
- Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而solr和elasticsearch都是基于该工具包做的一些封装。
4、Solr
- Solr是一个高性能,采用Java5开发,基于Lucene的一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口,封装了很多Lucene细节,自己的应用可以直接利用诸如 …/solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。
5、Elasticsearch,Lucene,Solr区别和联系
区别
- solr利用zookpper进行分布式管理,而elasticsearch自身带有分布式协调管理功能;
- solr比elasticsearch实现更加全面,solr官方提供的工恩能够更多,而elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供
- solr在传统的搜索应用中表现好于elasticsearch,而elasticsearch在实时搜索应用方面比solr表现好
联系
- solr和elasticsearch都是基于Lucene实现的
6、zookpper
- ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。其目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户;
7、倒排索引
*
8、B-Tree索引
*