1、概念:
Elasticsearch简称ES,是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。它提供了一个分布式服务,可以使您快速的近乎于准实时的存储、查询和分析超大数据集,通常被用来当做构建复杂查询特性和需求强大应用的基础引擎或技术。
(1)什么是搜索?
1)百度,谷歌等,我们可以通过他们去搜索我们需要的东西;
2)互联网的搜索:电商网站、招聘网站、新闻网站、各种APP(百度外卖,美团等等);
搜索就是通过一些关键字,给我们查询出来跟这些关键字相关的信息。
(2)什么是全文检索?
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对文章中的词,即语义 单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点。
2、使用场景:
阿里云Elasticsearch可以被用在如下几个场景中:
1、当您运营一个提供客户检索商品的在线电子商城的时候,可以使用ES来存储整个商品的目录和库存,并且为客户提供检索和自动推荐功能。
2、收集交易数据,存储数据并做趋势、统计、概要或异常分析。这种情况下,可以使用Logstash来收集、聚合和解析数据,并且存储到Elasticsearch。一旦数据进入Elasticsearch,您可以通过检索、聚合来掌握您感兴趣的信息。
3、 价格预警平台,为价格敏感客户提供匹配其需求(主要是价格方面)的商品。
4、在报表分析/BI领域,可以使用ES的聚合功能完成针对大数据量的复杂分析。
3、特点及优势
分布式的实时文件存储,每个字段都被索引并可被搜索。
分布式的实时分析搜索引擎。
商业版X-pack插件,提供企业级权限管控、实时系统监控等强大服务。
可弹性扩展到上百台服务器规模,处理PB级结构化或非结构化数据。
支持IK analyzer插件。
Elastic官方技术支持团队7*24小时技术支持。
4、ES与lucene的联系
(1)lucene是最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构);
(2)elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口等;
5、ES核心概念
(1)NRT:
近实时表示代码写入数据1s以内,读数据毫秒级别;
(2)集群
一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。
ElasticSearch中可以监控很多信息,有一个最重要的就是集群健康。 集群健康有三个状态:green(所有主要分片和复制分片都可用),yellow(所有主要分片可用,但不是所有复制分片都可用),red(不是所有的主要分片都可用)。
脑裂现象及解决方案:
https://www.cnblogs.com/zlslch/p/6477312.html
(3)节点
一个节点node就是一个ElasticSearch的实例。
集群中的一个节点会被选举为主节点master,它将临时管理集群级别的一些变更,譬如新建或者删除索引、增加或者移除节点等等。主节点不参与文档级别的变更或者搜索,所以不会成为集群的瓶颈。 任何节点都可以成为主节点。
用户能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,可以转发请求到相应的节点上。
节点数为什么是奇数
https://blog.csdn.net/varyall/article/details/88748652
(4)分片
一个分片shard是一个最小级别的工作单元,es把一个完整的索引分成多个分片。仅保存了索引中所有数据的一部分。 分片就是一个Lucene实例,并且它本身就是一个完整的搜索引擎。文档存储在分片中,并且在分片中被索引,但是程序不会直接与分片通信,而是与索引通信。
Replicas分片:代表索引副本。es可以设置多个索引的副本,副本的作用是提高了系统的容错性。当某个节点的分片损坏或者丢失的时候可以从副本中恢复。还可以提高查询搜索效率,es会自动对搜索请求进行负载均衡。
6、与关系型数据库的对比
7、ES架构图
8、ES数据类型详解
https://www.jianshu.com/p/01f489c46c38
9、elasticsearch-head的使用
https://www.cnblogs.com/xuwenjin/p/8792919.html