大数据之ElasticSearch初识一
ElasticSearch简介
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎 。它是用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的
是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。应用于云计算,达到实时搜索,稳定,可靠,快速,且安装使用方便。
ElasticSearch功能
- 全文搜索功能;
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索;
- 实时分析的分布式搜索引擎;
- 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
ElasticSearch优缺点
优点
- Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
- Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
- 处理多租户(multitenancy)不需要特殊配置,而Solr则 -需要更多的高级设置。
- Elasticsearch 采用 Gateway的概念,使得完备份更加简单。
es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
- 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点
- 还不够自动(不适合当前新的Index Warmup API,即冷启动/预热数据的方式。当系统长期处于低水
位的情况下,流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让
通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统
被压垮。)
性能
ElasticSearch更适合实时搜索(与solr相比)
- 当单纯的对已有数据进行搜索时, Solr更快。
- 当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。
- 随着数据量的增加, Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
Elasticsearch与关系型数据库对比
index索引库 | database数据库 |
---|---|
type类型 | table表 |
document文档 | column行 |
field字段 | row列 |
倒排索引 (inverted index) | B-Tree索引来加速检索 |