1.ElasticSearch 概况

ElasticSearch是什么?

  • 自动维护数据分布到多个节点上并建立索引,搜索请求分布到多个节点去执行
  • 自动维护数据的冗余副本,保证一些机器宕机之后。数据不会丢失
  • 封装了更多的高级功能,给我们提供了更多的支持,让我们快速的开发应用,开发更复杂的应用;复杂的搜索功能,聚合分析的功能,基于地理位置的是搜索(比如,搜索附近1公里以内的超市)

ElasticSearch的功能:

  • 分布式的搜索引擎和数据分析引擎

搜索:类似百度搜索,网站内的站内搜索,IT系统的检索
数据分析:电商网站(最近7天牙膏销量排名前10的商家);新闻网站(最近一个月访问量排名前三的新闻板块)
分布式:可将数据分布在各个节点

  • 全文检索,结构化检索,数据分析

全文检索:搜索商品名称包含牙膏的商品;select * from goods where goods_name like “%牙膏%”;
结构化检索:搜索商品分类为日化用品的商品;select * from goods where category_id=“日化用品”;还有部分匹配,自动完成,搜索纠错。搜索推荐等功能
数据分析:分析一个商品分类下有多少个商品;select category_id,count(*) from goods group by category_id;

  • 对海量数据进行近实时处理

分布式:当ES数据量过大,单台节点存储不下时,ES自动可以将海量数据分散到多台服务器上存储和检索
海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索,那么就可以实现对海量数据的处理了
近实时:ES可以在秒级别对数据进行搜索和分析(需要花费1小时以上就是离线批处理)

ElasticSearch的适用场景:

  • 日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK,ElasticSearch+logstash+Kibana)
  • 电商网站,检索商品
  • 商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候发送通知给用户
  • BI系统(商业智能),分析一下某区域最近3年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数张报表。ES执行数据分析和挖掘,Kibana进行数据可视化
  • 站内搜索(电商,招聘,门户等等),IT系统搜索(OA,CRM,ERP等等),数据分析

ElasticSearch的特点:

  • 可以作为一个大型分布式居群(数百台服务器)技术,处理PB级数据,服务大公司;也可运行在单机上,服务小公司
  • ElasticSearch主要是将全文检索,数据分析以及分布式技术合并在了一起
  • 对用户而言开箱即用简单易用
  • 数据库的功能面对跟多领域是不够用的(事务,联机事务),不如全文检索,同义词处理,相关排名,复杂数据分析,海量数据的近实时处理;ElasticSearch提供了很多数据库不能提供的功能

lucene和ElasticSearch的前世今生:
lucene:最先进、功能最轻大的搜索,直接基于lucene开发过于复杂,API复杂(实现一些简单的功能,需要写大量的java代码),需要深入理解原理

ElasticSearch:基于lucene,提供简单易用的restful api接口,java接口(还有其他语言的api接口)

  • 分布式的文档存储引擎
  • 分布式的搜索引擎和分析引擎
  • 分布式,支持PB级别的数据

开箱即用,拥有优秀的默认参数,不需要任何额外的设置,完全开源

ElasticSearch的核心概念:

  • Near Realtime(NRT):近实时,从写入数据到数据可以被搜索有一个小延迟(大概1秒);基于ES执行搜索和分析可以达到秒级
  • Cluster:集群,集群中包含多个节点,每个节点属于哪个集群是通过配置来决定的(集群名称默认是elasticsearch),对于中小型应用来说,刚开始一个集群一个节点很正常
  • Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),默认节点会加入一个节点名称为’elsaticsearch’的集群,如果直接启动一堆节点,那么他们会自动组成一个elasticsearch集群,一个节点也可组成一个elasticsearch集群
  • Document & Field:文档,ES中最小的数据单元,一个document相当于一条数据,通常用JSON数据结构表示,每个Index下的type中,都可以存储多条document.一个document里面有多个field,每个field就是一个数据字段
 product  document               
 product:{                  
 "product_id":"1",                    
 "product_name":"iphone11",                  
 "product_desc":"iPhone手机",                    
 "category_id":"2",                    
 "category_name":"电子数码"                   
 }
  • Index:索引,包含一堆有相似结构的文档数据。一个index包含多个document,一个index就代表一类类似的或者相同的document。(客户索引,商品索引,订单索引)
  • Type:类型,每个索引可以包含包含一个或多个type,type是index中的一个逻辑分类,一个type下的document1都有相同的field(一个博客系统,有一个索引,可以定义用户数据type,博客数据type,评论type)
  • Shard:分片,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在堕胎服务器上存储。有了shard就可以横向扩张,存储更多数据,让搜索和分析等操作分布到多台服务器上执行,提升吞吐量和性能。
  • Replica:副本,任何一个服务器随时可能故障或宕机,此时shard可能会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。
primary shard(建立索引时一次设置,不能修改,默认5个),
replica shard(随时修改,默认1个)

ElasticSearch核心概念 VS 数据库的核心概念:
ElasticSearch 数据库 field 字段 document 行 type 表 index 库

ElasticSearch数据库
field字段
document
type
index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值