Elasticsearch简称ES,是一个基于Lucene构建的开源、分布式、Restful接口的全文搜索引擎,仍是一个分布式文档数据库。天生就是分布式、高可用、可扩展的,能够在很短的时间内存储、搜索和分析大量的数据。前端
全文搜索也叫全文检索,是指扫描文章中的每个词,对每个词进创建一个索引,指明该词在文章中出现的次数和位置,当前端用户输入的关键词发起查询请求后,搜索引擎就会根据事先创建的索引进行查找,并将查询的结果响应给用户。 这里有两个关键字:分词和索引,Elasticsearch内部会完成这两件事情,对保存的文本内容按规则进行分词,并对这些分词后的词条创建索引,供用户查询。java
全文搜索过程根据关键词建立的索引叫倒排索引,顾名思义,创建正向关系“文本内容-关键词”叫正排索引,后续会介绍,倒排索引就是把原有关系倒过来,创建成“关键词-文本内容”的关系,这样的关系很是利于搜索。 举个例子:node
先进行英文分词,再创建倒排索引,获得一份简易的“关键词-文本”的映射关系以下:python
关键词 | 文本编号 |
---|---|
I | 1,2 |
have | 1,2 |
a | 1,2 |
friend | 1 |
who | 1 |
loves | 1 |
smile | 1 |
dream | 2 |
today | 2 |
有了这个映射表,搜索"have"关键词时,当即就能返回id为1,2的两条记录,搜索today时,返回id为2的记录,这样的搜索性能很是高。固然Elasticsearch维护的倒排索引包含更多的信息,此处只是做简易的原理介绍。git
搜索类场景 常见的搜索场景好比说电商网站、招聘网站、新闻资讯类网站、各类app内的搜索。github
日志分析类场景 经典的ELK组合(Elasticsearch/Logstash/Kibana),能够完成日志收集,日志存储,日志分析查询界面基本功能,目前该方案的实现很普及,大部分企业日志分析系统都是使用该方案。数据库
数据预警平台及数据分析场景 例如电商价格预警,在支持的电商平台设置价格预警,当优惠的价格低于某个值时,触发通知消息,通知用户购买。 数据分析常见的好比分析电商平台销售量top 10的品牌,分析博客系统、头条网站top 10关注度、评论数、访问量的内容等等。浏览器
商业BI系统 比大型零售超市,须要分析上一季度用户消费金额,年龄段,天天各时间段到店人数分布等信息,输出相应的报表数据,并预测下一季度的热卖商品,根据年龄段定向推荐适宜产品。Elasticsearch执行数据分析和挖掘,Kibana作数据可视化。安全
架构各组件简单释义:restful
https://www.elastic.co/cn/ 上面有各版本的下载地址,官方文档和使用示例,请自行下载安装包。
https://github.com/elastic/elasticsearch 上面有各版本的源码地址,能够切换到指定版本进行研究,目前选用版本为6.3.1
{ "name" : "node-1", "cluster_name" : "hy-application", "cluster_uuid" : "lJ4DRWOvQauAy-VEYiZc2g", "version" : { "number" : "6.3.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "eb782d0", "build_date" : "2018-06-29T21:59:26.107521Z", "build_snapshot" : false, "lucene_version" : "7.3.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
本篇简单介绍了Elasticsearch的基本概念,适用场景和主要的功能框架,以及最简单的用于学习验证的安装启动步骤,做为Elasticsearch系统的开篇学习,Elasticsearch有个特色就是开箱即用,若是是用做学习,或是中小型应用,数据量比较少、操做不是很复杂的话,直接启动就能够用了。后续的Elasticsearch学习,如无特别说明,均以6.3.1版本为例。
专一Java高并发、分布式架构,更多技术干货分享与心得,请关注公众号:Java架构社区