elastic search 基本概念
转自:大讲台课程 http://www.dajiangtai.com/course/search.do?search=elastic
一、需求场景-产生背景
1、海量数据组合条件查询(
hbase 只能基于rowkey快速查询,条件单一)
lucene:是一个全文检索引擎工具包(架构),提供了完整的查询引擎和索引引擎,部分文本分析引擎
基于索引库,对入库数据建立索引(索引引擎),通过搜索引擎提供快速的搜索服务。
2、毫秒级或者秒级的响应速度
二、es定义
1、全文搜索引擎
2、基于lucene
3、分布式多用户
4、提供 restful web api
5、实时 搜索
6、稳定、可靠、快速、安装使用方便
三、特点
分布式+实时
四、es与lucene
1、半成品与成品的区别:lucene需要二次开发,es直接提供了restful api
2、lucene专注于搜索底层的建设,而es专注于企业应用
五、es与solr
1、两者的功能定位是基本一致的,都是基于lucene二次开发提供搜索服务,solr提供类似Web-service的api,api采用的数据交换格式是xml格式。
2、solr较早出现,成熟、稳定,对历史数据搜索速度非常快,毫秒级;但建立索引时,io阻塞明显,此时会影响搜索效率,因此实时搜索效率低。借助于zookeeper进行分布式
3、es不太成熟、开发维护者较少,自带分布式、血统高贵,支持实时搜索,多租户(对同一数据建立多种索引),gateway使得数据持久化更简单,分布式节点为对等节点、故障时自动均衡
3、随着数据量的增加solr的响应时间明显增大(1s-10s),但是es没有明显变化(大型互联网公司,从solr转到es,速度提高50倍)
4、目前es搜索热度已经超过solr(百度搜索指数)
5、总结:solr是传统搜索应用的解决方案,es
六、es的索引库与传统关系型数据库
1、索引库与关系库的区别
2、es的索引库本质是nosql数据库,数据的层级关系Index{Type{Document{Field}}};
关系型数据库的层级关系DataBase{Table{Rowl{column}}}
七、es的架构图
八、在hadoop生态圈中的位置
1、可以在数据入库(传统数据库或hdfs)的同时进行异步的创建es的索引
2、可以将查询结果写入传统库或hdfs进行统计分析
3、可以直接通过Rest API展现查询结果
九、应用场景
1、取代solr,支持海量数据实时搜索
2、取代mongo,作为nosql数据库,其读写性能优于mongo,支持地理位置查询
3、统计、日志类的时间序的数据存储和分析、可视化,这方面是引领者
4、国内外企业应用现状:维基百科、stack overflow、github、百度、新浪、阿里、腾讯等