一、Elasticsearch 简介
Elasticsearch:官方分布式搜索和分析引擎 | Elastic在 RESTful 风格的分布式免费开源搜索和分析引擎开源中,Elasticsearch 处于领先地位,速度快,可实现水平可扩展性和可靠性,并能让您轻松进行管理。免费启用。
1、介绍
Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。
2、Elasticsearch的起源
Elasticsearch创始人
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。他在找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
直接基于Luence工作会比较困难,所以Shay开始抽象Lucene代码以便java程序员可以在应用中添加搜索功能。他发布的第一个开源项目,叫做“Compass”。
后来Shay找到一份工作,这份工作处在高性能和内存数据网络的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也就是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为GitHub上最受欢用的项目之一,代码贡献者超过300人。一家主营ElasicSearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticseach将永远开源且对所有人可用。
如今Elasticseach的应用已经遥遥领先
二、Elasticsearch的基本概念
- 集群(cluster)Elasticsearch 集群一般是由多个节点共同组成的分布式集群,节点之间互通,彼此配合,共同对外提供搜索和索引服务(节点之间能够将客户端请求转向到合适的节点)。
- 节点(node)不同的节点会负责不同的角色,有的负责一个,有的可能负责多个。Elasticsearch 中有多个节点角色,其中有两个比较主要的是数据节点和主节点。 (data node)数据节点主要承担了数据存储和数据处理的工作,保存索引分片,处理与数据相关的操作,例如 CRUD、搜索、聚合等各种 I/O、内存和 CPU 密集型操作。 (master node)主节点主要承担索引的创建或删除索引、分片分配到哪个数据节点。Elasticsearch 集群拥有一个稳定的主节点对集群健康很重要
- 索引(index) ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。
- 类型(type) 类型是索引内部的逻辑分区,一个索引内部可定义一个或多个类型(type)。一般来说,类型就是为那些拥有相同的域的文档做的预定义。例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。类比传统的关系型数据库领域来说,类型相当于“表”。
- 文档(document) 文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。
- 分片(shard)和副本(Replica) Shard有两种类型:primary和replica,即主shard及副本shard。Primary shard用于文档存储,每个新的索引会自动创建5个Primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。每个Primary shard默认配置了一个Replica shard,但也可以配置多个,且其数量可动态更改。
三、Elasticsearch的应用场景
- 日志场景 ES 提供了弹性可扩展、实时的集中式存储方案以及全文搜索功能,方便日志的统一管理和查询,帮助用户快速定位和发现问题,提高解决问题的效率。
- 全文检索 电商商品搜索、移动应用搜索、企业内部信息搜索等海量数据下的站内搜索服务是高效获取信息的必要途径,ES 拥有全文检索功能,对结构化和非结构化数据都有良好的支持,同时还提供了简单易用的 RESTful API 和各种语言的客户端,方便用户快速搭建稳定的搜索服务,整合到已有的业务框架中。
- 数据分析 ES 拥有结构化查询的能力,支持复杂的过滤和聚合统计功能,帮助客户对海量数据进行高效地个性化统计分析、发现问题与机会、辅助商业决策,让数据产生真正的价值。
上云就上腾讯云,ES就用腾讯云ES