ElasticSearch基础

1.1 简介
Elasticsearch是一个高度可伸缩的开源全文搜索引擎。Elasticsearch让你可以快速、实时地存储、搜索和分析大量数据,它通常作为互联网应用的内部搜索引擎,为需要复杂搜索功能的应用提供支持。ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

1.2 使用场景
电商搜索引擎,使用 Elasticsearch 存储商品与品类信息,提供搜索和搜索建议功能(全文检索)。 
日志系统,收集,分析日志数据,可以使用 Logstash (Elasticsearch/Logstash/Kibana 栈的一部分)来收集,然后将这些数据提供给Elasticsearch,通过搜索和聚合计算挖掘有价值的信息,最后通过 Kibana 进行可视化展示。 价格提醒平台,在价格变动时,让用户可以收到通知。抓取供应商的价格,推入Elasticsearch,并使用其反向搜索(Percolator)功能来匹配用户的价格通知设置,找到匹配后将提醒推送给用户。BI(商业智能),分析业务大数据,挖掘有价值的商务信息。可以使用 Elasticsearch来存储数据,然后使用 Kibana ElasticsearchLogstashKibana堆栈的一部分构建自定义仪表板,该仪表板可以可视化显示数据。此外,还可以使用Elasticsearch 聚合功能对数据执行复杂的业务智能分析。

1.3 ElasticSearch 的特点
1.3.1 天然分片,天然集群
ES 把数据分成多个shard,下图中的P0-P2,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中。随着数据的不断增加,集群可以增加多个分片,把多个分片放到多个机子上,已达到负载均衡,横向扩展

 

在实际运算过程中,每个查询任务提交到某一个节点,该节点必须负责将数据进行整理汇聚,再返回给客户端,也就是一个简单的节点上进行 Map 计算,在一个固定的节点上进行 Reduces 得到最终结果向客户端返回。

1.3.2 天然索引 

ES 所有数据都是默认进行索引的,这点和 MySQL 正好相反,MySQL 是默认不加索引,要加索引必须特别说明,ES 只有不加索引才需要说明。而 ES 使用的是倒排索引和 MySQL 的 B+Tree 索引不同。

传统关系性数据库

 

 

 

 

 

 

 可以看到 Lucene 为倒排索引(Term Dictionary)部分又增加一层TermIndex结构,用于快速定位,而这TermIndex是缓存在内存中的,但MySQL的B+tree不在内存中,所以整体来看ES速度更快,但同时也更消耗资源(内存、磁盘)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值