04 elasticSearch核心概念

1 核心概念和术语

elasticSearch的核心概念有:Node,Cluster,Shards,Replicas,Index,Type,Document,Settings,Mapping,和Analyzer。

Node

即节点。节点是组成elasticSearch集群的基本服务单元,集群中的每个运行中的elasticSearch服务器都可称之为节点。

Cluster

即集群。elasticSearch的集群是由具有相同cluster.name(默认值为elasticsearch)的一个或者多个elasticSearch节点组成的,各个节点协同工作,共享数据同一个集群内的节点的名字不能重复,但是集群的名字一定要相同

集群状态有三种:

  1. Green:绿色,表示节点的运行状态是健康的,所有的主分片和副本分片都可以正常工作,集群100%健康
  2. Yellow:黄色,表示节点的运行状态是预警状态,所有的主分片都可以正常工作,但是至少有一个副本分片是不能正常工作的。此时集群依然可以正常工作,但是集群的高可用性在某种程度上被弱化。(比如说,我们集群一个节点,但是此时索引分了三片,每一片都有一个复制分片,此时所有的分片都在这一个节点上的,此时一旦这个节点的挂了,数据就会查不到。)
  3. Red: 红色,表示集群无法正常工作。此时,集群至少有一个分片的主分片以及他的全部副本分片都不可以正常工作。虽然此时集群的查询操作还可以进行,但是也只能返回部分数据(其他正常分片的数据可以返回),而分配到这个有问题的分片上的写入请求将会报错,最终导致数据丢失。

shards

即分片。当索引数据量太大的时候,受限于单个节点的内存和磁盘处理能力等,节点无法足够快的响应客户端的请求,此时需要讲一个索引上的数据,进行水平拆分。拆分出来的每个数据部分称之为一个分片。一般来说,每个分片都会放到不同的服务器上。

每一个分片都必须有一个主分片和零到多个副本分片

创建索引的时候,需要指定分片的数量,因为当我们写入数据的时候,是通过路由来确定往哪个分片写入,所以必须在创建的时候指定,并且不能更改。

查询数据的时候,es会把查询请求分发到每个相关的分片,然后汇总每个分片的查询结果。

es默认是为一个索引创建5个分片,并且为每个分片创建一个副本分片

Replicas

即备份。也可以称之为副本,指的就是主分片的备份分片。这种备份是精确复制模式。每个主分片可以有零个或者多个副本分片,主分片副本分片都可以对外提供查询服务。当进行写入操作的时候,首先在主分片上完成数据的索引,然后数据会从主分片分发到副本分片上进行索引。

当主分片不可用时,es会在副本分片中选举出一个分片作为主分片

index

即索引。在es中,索引是由一个和多个分片组成。在使用索引的时候,需要通过索引名称在集群中进行唯一标识,可理解为MySQL中数据库的概念。

type

即类别。指的是索引内部的逻辑分区,通过Type的名字在索引内进行唯一标识。在查询时如果没有指定该值,则表示需要在整个索引中查询,比较类似于MySQL中的表的概念。es已经在逐步移出type的概念。

Document

即文档。 索引中的一条数据。,一条文档通过_id_type进行唯一标识。

settings:

settings是对集群中的索引的定义信息。比如一个索引默认的分片数等等。

mapping

mapping中保存了定义索引中字段(Filed)的存储类型,分词方式,是否存储等信息。类似与关系型数据库中的表结构信息。

在elasticSearch中,mapping是可以动态识别的。如果不需要手动创建mapping,因为elasticSearch会根据数据格式自动识别数据类型。当需要对某些字段添加特殊属性的时候,比如定义使用其他的分词器,是否分词,是否存储等,就需要手动设置mapping。

Analyzer

Analyzer表示的是字段分词的定义。一个Analyzer通常由一个或者多个Tokenizer和零到多个Filter组成。在es中,默认的标准Analyzer包含一个标准的Tokenizer和三个Filter,即Standard Token Filter, Lower Case Token Filter 和 Stop Token Filter

索引词 (term)

在es中索引词是一个能够被索引的精确值。foo,foo,FOO这三个是不同的索引词。索引词可以通过term查询进行准确搜索。

文本(text)

文本是一段普通的非结构化文字,通常,文本会被分析成一个个的索引词,存储在es的索引库中。为了让文本能够进行搜索,文本字段需要事先进行分析:当对文本中的关键词进行查询的时候,搜索引擎应该根据搜索条件搜索出原文本。

分析

分析就是将文本转为索引词的过程。分析的过程依赖分词器。

路由

当存储一个文档的时候,他会存储在一个唯一的主分片上,具体是哪个分片是通过散列值进行选择。默认情况下,这个值是由文档ID生成的。如果文档有一个指定的父文档,则从父文档ID中生成,该值可以在存储文档的时候进行修改。

字段(Field)

文档中包含多个字段,字段可以是一个简单的值(例如字符串,整数,日期),也可以是一个数组或者对象的嵌套结构。字段还可以指定如何分析该字段的值。

来源字段(source field)

默认情况下,你的原文档将被存储在_source这个字段中,当你查询的时候也是返回这个字段的。这允许你可以从搜索结果中访问原始的对象,这个对象返回一个精确的json字符串,这个对象不显示索引分析后的其他任何数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值