模块十九_Elasticsearch

序言:

文章内容输出来源:拉勾教育Java高薪训练营。
本篇文章是学习课程中的一部分课后笔记

一、 Elasticsearch 介绍、概念

1. Elasticsearch 介绍
  • Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储、检索数据。本身扩展性很好,可扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,但是它通过简单的RestfulAPI和javaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。

  • Elasticsearch官网:https://www.elastic.co/cn/products/elasticsearch

  • 起源:Shay Banon。2004年失业,陪老婆去伦敦学习厨师。失业在家帮老婆写一个菜谱搜索引擎。封装了lucene,做出了开源项目compass。找到工作后,做分布式高性能项目,再封装compass,写出了elasticsearch,使得lucene支持分布式。现在是Elasticsearch创始人兼Elastic首席执行官。

2.Elasticsearch的功能
  • 分布式的搜索引擎
    分布式:Elasticsearch自动将海量数据分散到多台服务器上去存储和检索
    搜索:百度、谷歌,站内搜索
  • 全文检索
    提供模糊搜索等自动度很高的查询方式,并进行相关性排名,高亮等功能
  • 数据分析引擎(分组聚合)
    电商网站,最近一周笔记本电脑这种商品销量排名top10的商家有哪些?新闻网站,最近1个月访问量排名top3的新闻板块是哪些
  • 对海量数据进行近实时的处理
    海量数据的处理:因为是分布式架构,Elasticsearch可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理
    近实时:Elasticsearch可以实现秒级别的数据搜索和分析
3.Elasticsearch的特点
  • Elasticsearch的特点是它提供了一个极速的搜索体验。这源于它的高速(speed)。相比较其它的一些大数据引擎,Elasticsearch可以实现秒级的搜索,速度非常有优势。Elasticsearch的cluster是一种分布式的部署,极易扩展(scale )这样很容易使它处理PB级的数据库容量。最重要的是Elasticsearch是它搜索的结果可以按照分数进行排序,它能提供我们最相关的搜索结果(relevance) 。
特点.png
  1. 安装方便:没有其他依赖,下载后安装非常方便;只用修改几个参数就可以搭建起来一个集群
  2. JSON:输入/输出格式为 JSON,意味着不需要定义 Schema,快捷方便
  3. RESTful:基本所有操作 ( 索引、查询、甚至是配置 ) 都可以通过 HTTP 接口进行
  4. 分布式:节点对外表现对等(每个节点都可以用来做入口) 加入节点自动负载均衡
  5. 多租户:可根据不同的用途分索引,可以同时操作多个索引
  6. 支持超大数据: 可以扩展到 PB 级的结构化和非结构化数据 海量数据的近实时处理
4. Elasticsearch企业使用场景
    1. 搜索类场景
      比如说电商网站、招聘网站、新闻资讯类网站、各种app内的搜索。
    1. 日志分析类场景
      经典的ELK组合(Elasticsearch/Logstash/Kibana),可以完成日志收集,日志存储,日志分析查询界面基本功能,目前该方案的实现很普及,大部分企业日志分析系统使用了该方案。
    1. 数据预警平台及数据分析场景
      例如电商价格预警,在支持的电商平台设置价格预警,当优惠的价格低于某个值时,触发通知消息,通知用户购买。
      数据分析常见的比如分析电商平台销售量top 10的品牌,分析博客系统、头条网站top 10关注度、评论数、访问量的内容等等。
    1. 商业BI(Business Intelligence)系统
      比如大型零售超市,需要分析上一季度用户消费金额,年龄段,每天各时间段到店人数分布等信息,输出相应的报表数据,并预测下一季度的热卖商品,根据年龄段定向推荐适宜产品。
      Elasticsearch执行数据分析和挖掘,Kibana做数据可视化。
5.主流全文搜索方案对比
  • Lucene、Solr、Elasticsearch是目前主流的全文搜索方案,基于倒排索引机制完成快速全文搜索。

  • Lucene
    Lucene是Apache基金会维护的一套完全使用Java编写的信息搜索工具包(Jar包),它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要我们自己进一步开发搜索引擎系统,例如数据获取、解析、分词等方面的东西。
    注意:Lucene只是一个框架,我们需要在Java程序中集成它再使用。而且需要很多的学习才能明白它是如何运行的,熟练运用Lucene非常复杂。

  • Solr
    Solr是一个有HTTP接口的基于Lucene的查询服务器,是一个搜索引擎系统,封装了很多Lucene细节,Solr可以直接利用HTTP GET/POST请求去查询,维护修改索引。

  • Elasticsearch
    Elasticsearch也是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎。采用的策略是分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

  • 三者之间的区别和联系
    Solr和Elasticsearch都是基于Lucene实现的。但Solr和Elasticsearch之间也是有区别的
    1)Solr利用Zookpper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能
    2)Solr比Elasticsearch实现更加全面,Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能, 高级功能多由第三方插件提供
    3)Solr在传统的搜索应用中表现好于Elasticsearch,而Elasticsearch在实时搜索应用方面比Solr表现好
    https://db-engines.com/en/ranking

二、核心概念

  • 索引(index)
    类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以理解成一个关系型数据库。
  • 类型(type)
    代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。
    注意ES每个大版本之间区别很大:
    ES 5.x中一个index可以有多种type。
    ES 6.x中一个index只能有一种type。
    ES 7.x以后 要逐渐移除type这个概念。
  • 映射(mapping)
    mapping定义了每个字段的类型等信息。相当于关系型数据库中的表结构。
    常用数据类型:text、keyword、number、array、range、boolean、date、geo_point、ip、nested、object
映射.png
  • Rest风格API
    文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

你可能感兴趣的:(模块十九_Elasticsearch)