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的架构图

     elastic search 基本概念

八、在hadoop生态圈中的位置

     1、可以在数据入库(传统数据库或hdfs)的同时进行异步的创建es的索引
     2、可以将查询结果写入传统库或hdfs进行统计分析
     3、可以直接通过Rest API展现查询结果

九、应用场景
     1、取代solr,支持海量数据实时搜索
     2、取代mongo,作为nosql数据库,其读写性能优于mongo,支持地理位置查询
     3、统计、日志类的时间序的数据存储和分析、可视化,这方面是引领者
     4、国内外企业应用现状:*、stack overflow、github、百度、新浪、阿里、腾讯等