ElasticSearch简单介绍

ElasticSearch简单介绍

目前国内有大量的公司都在使用 Elasticsearch,包括阿里、京东、滴滴、今日头条、小米、vivo等诸多知名公司。除了搜索功能之外,Elasticsearch还结合Kibana、Logstash、Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控等多个领域。

ElasticSearch官方网站(https://www.elastic.co/cn/elasticsearch/)

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

Elasticsearch相关名词:

① 节点(Node):节点是指Elasticsearch可单独运行的实例。一个物理机可以有多个节点,物理机:节点数=1:N。节点也是组成集群的服务单元。它的作用是保存数据并具有索引和搜索能力,通过名字作为唯一标识

② 集群(Cluster):集群属于一个抽象概念,它是由一个或多个节点组成。其中有一个为主节点,这个主节点是通过选举产生的。它的作用是为整个数据提供跨所有节点的集合索引和搜索功能。

③ 索引(Index):索引是不同类型的文档和文档属性的集合(类似于MYSQL表)。其中索引会使用分片的机制来提高检索性能。

④ 分片(Shards->Lucene Index):Shard也被称为Lucene Index,主要用于分布式的形式存储索引数据,一个索引分可能被分成多个分片。分片的数量只能在索引创建前指定,并且索引创建后不能更改。它的作用是让索引数据能水平切分,从而减少单独节点的压力,通过并向检索来提高查询性能。

⑤ 映射(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是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
2、Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
3、处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
4、Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
5、各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点:

Elasticsearch 是默认延迟加载fielddata到内存里的。当elasticsearch第一次遇到一个查询需要一个指定field的fielddata的时候,就会把索引的每个段中整个field加载到内存。对于小段,这是个可以忽略不计的时间,但是如果你有一些5G大小的段并且需要加载10GB的fielddata到内存里,这个过程需要数十秒,习惯于秒内响应时间的用户会被网突如其来的迟钝所打击。

有三种方法应对这种延迟尖峰:
Eagerly load fielddata(饿汉式(预)加载fielddata):
Eagerly load global ordinals(饿汉式(预)加载全局序数)
Prepopulate caches with warmers (使用warmer提前加载缓存)。

所有这些都是一个意思:预先加载fielddata到内存里,这样当用户需要执行一个搜索的时候就感受不到延迟了。

原文地址:

https://www.elastic.co/guide/en/elasticsearch/guide/current/preload-fielddata.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实战

展开阅读全文

页面更新:2024-04-03

标签:分布式   副本   节点   字段   集群   实时   索引   加载   内存   简单   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top