ElasticSearch简单介绍
ElasticSearch简单介绍
目前国内有大量的公司都在使用Elasticsearch,包括阿里、京东、滴滴、今日头条、小米、vivo等诸多知名公司。除了搜索功能之外,Elasticsearch还结合Kibana、Logstash、ElasticStack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控等多个领域。
ElasticSearch官方网站(https:www。elastic。cocnelasticsearch)
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为ElasticStack的核心,Elasticsearch会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。
Elasticsearch相关名词:
节点(Node):节点是指Elasticsearch可单独运行的实例。一个物理机可以有多个节点,物理机:节点数1:N。节点也是组成集群的服务单元。它的作用是保存数据并具有索引和搜索能力,通过名字作为唯一标识
集群(Cluster):集群属于一个抽象概念,它是由一个或多个节点组成。其中有一个为主节点,这个主节点是通过选举产生的。它的作用是为整个数据提供跨所有节点的集合索引和搜索功能。
索引(Index):索引是不同类型的文档和文档属性的集合(类似于MYSQL表)。其中索引会使用分片的机制来提高检索性能。
分片(ShardsLuceneIndex):Shard也被称为LuceneIndex,主要用于分布式的形式存储索引数据,一个索引分可能被分成多个分片。分片的数量只能在索引创建前指定,并且索引创建后不能更改。它的作用是让索引数据能水平切分,从而减少单独节点的压力,通过并向检索来提高查询性能。
映射(Mapping):映射是定义一个文档以及其所包含的字段以及被存储和索引的方法。其中包含:元数据字段、字段列表或属性等信息。
文档(Document):它是以JSON格式定义的特定方式的字段集合,每个文档都有一个唯一标识。
副本(Replica):索引定义时需指定副本分片数(0),并且副本数可以动态更改。
副本分片主要用于负责容错,以及承担读请求负载,通过在这些副本中执行并行搜索来提高搜索的性能,当某个节点某个分片损坏或丢失时可以从副本中恢复。
网关(Gateway):Gateway是Elasticsearch索引的持久化存储方式,ES默认是先把索引存放到内存中,当内存满了之后,再持久化到硬盘里。当这个Elasticsearch集群关闭或者再次重新启动时就会从Gateway中读取索引数据。Gateway支持多种类型:本地文件系统(默认)、分布式文件系统Hadoop以及AMZ的S3云存储服务。
一、elasticsearch与solr的比较
solr优点:
1、Solr有一个更大、更成熟的用户、开发和贡献者社区。
2、支持添加多种格式的索引,如:HTML、PDF、微软Office系列软件格式以及JSON、XML、CSV等纯文本格式。
3、Solr比较成熟、稳定。
4、不考虑建索引的同时进行搜索,速度更快。
缺点:
建立索引时,搜索效率下降,实时索引搜索效率不高。
Elasticsearch优点:
1、Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做Pushreplication。
2、Elasticsearch完全支持ApacheLucene的接近实时的搜索。
3、处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
4、Elasticsearch采用Gateway的概念,使得完备份更加简单。
5、各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点:
Elasticsearch是默认延迟加载fielddata到内存里的。当elasticsearch第一次遇到一个查询需要一个指定field的fielddata的时候,就会把索引的每个段中整个field加载到内存。对于小段,这是个可以忽略不计的时间,但是如果你有一些5G大小的段并且需要加载10GB的fielddata到内存里,这个过程需要数十秒,习惯于秒内响应时间的用户会被网突如其来的迟钝所打击。
有三种方法应对这种延迟尖峰:
Eagerlyloadfielddata(饿汉式(预)加载fielddata):
Eagerlyloadglobalordinals(饿汉式(预)加载全局序数)
Prepopulatecacheswithwarmers(使用warmer提前加载缓存)。
所有这些都是一个意思:预先加载fielddata到内存里,这样当用户需要执行一个搜索的时候就感受不到延迟了。
(原文地址:
https:www。elastic。coguideenelasticsearchguidecurrentpreloadfielddata。html)
总结:
1、当单纯的对已有数据进行搜索时,Solr更快。
2、当实时建立索引时,Solr会产生io阻塞,查询性能较差,Elasticsearch具有明显的优势。
3、随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
4、Solr的架构不适合实时搜索的应用。
5、Solr支持更多格式的数据,而Elasticsearch仅支持json文件格式
6、Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch
7、Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用
二、ElasticSearch学习路线图:
(1)搜索引擎认知
(2)ElasticSearch认知
(3)ElasticSearch基础
ElasticSearch基础概念
ElasticSearch基本数据类型
ElasticSearch基本检索类型
ElasticSearch基本聚合类型
Elasticsearch基本操作
(4)ElasticSearch常用工具
(5)ElasticSearch进阶
(6)ElasticSearch实战