最近开发需要使用到es,我就将自己在es中一些学习和使用情况记录下来,方便以后复习和他人学习使用。如果文档中有错误请麻烦给我指出一下,感谢!

es系列导航

Elasticsearch第一篇:基本介绍
Elasticsearch第二篇:es版本比较

一、简介

Elasticsearch是基于Lucene的不足,而推出的分布式的全文搜索引擎,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案,ES的索引库管理支持依然是基于Apache Lucene™的开源搜索引擎。
​ ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能
目的是通过简单的 RESTful API来隐Lucene的复杂性,从而让全文搜索变得简单。

二、特点

  1. 操作简单
  2. 支持分布式,能在分布式/集群中使用
  3. 支持RESTful的风格来进行通信
  4. 基于Lucene来进行分布式的全文检索
  5. 处理PB级结构化与非结构化数据
  6. 支持各种语言客户端

三、基本概念

1.2.1.Near Realtime(NRT)

近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级

1.2.2.Index:索引库

包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

1.2.3.Type:类型

每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。

1.2.4.Document&field

文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

结构概念图

Elasticsearch第一篇:基本介绍

1.2.5.Cluster:集群

包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

1.2.6.Node:节点

集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为"elasticsearch"的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群

1.2.7.shard(分片)

单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

1.2.8.replica(复制品)

任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。

集群概念图

Elasticsearch第一篇:基本介绍

相关文章:

  • 2021-11-24
  • 2021-07-29
  • 2021-12-19
  • 2021-09-18
  • 2021-10-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-14
  • 2022-02-07
  • 2022-12-23
  • 2021-06-16
  • 2022-01-28
  • 2021-06-01
  • 2021-04-21
相关资源
相似解决方案