ES系列基本概念
Posted wangzhuxing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES系列基本概念相关的知识,希望对你有一定的参考价值。
一、基础概念
1、索引
索引(index)是elasticsearch的一个逻辑存储,可以理解为关系型数据库中的数据库,es可以把索引数据存放到一台服务器上,也可以sharding后存到多台服务器上,每个索引有一个或多个分片,每个分片可以有多个副本。
2、索引类型(index_type)
在es中,一个索引对象可以存储多个不同用途的对象,通过索引类型(index_type)可以区分单个索引中的不同对象,可以理解为关系型数据库中的表。每个索引类型可以有不同的结构,但是不同的索引类型不能为相同的属性设置不同的类型。
3、文档(document)
存储在es中的主要实体叫文档(document),可以理解为关系型数据库中表的一行记录。每个文档由多个字段构成,es是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯一的标识符。
4、映射(mapping)
Mapping,就是对索引库中索引的字段名及其数据类型进行定义。
ES默认是动态创建索引和索引类型的mapping的。这就相当于无需定义Solr中的Schema,无需指定各个字段的索引规则就可以索引文件,很方便。但有时方便就代表着不灵活。比如,ES默认一个字段是要做分词的,但我们有时要搜索匹配整个字段却不行。如有统计工作要记录每个城市出现的次数。对于NAME字段,若记录“new york”文本,ES可能会把它拆分成“new”和“york”这两个词,分别计算这个两个单词的次数,而不是我们期望的“new york”。
这时,就需要我们在创建索引时定义mapping。此外,es支持多字段结构,例如:我们希望两个字段中有相同的值,一个用于搜索,一个用户排序;或者一个用于分词器分析,一个用于空白字符。
二、核心概念
1. 分片
一个分片本身就是一个完整的搜索引擎。文档存储在分片中,而分片则会被分配到集群中节点中,随着集群的扩大和缩小,es会自动地将分片在节点之间进行迁移,以保证集群能保持一种平衡。
1.如果我们的索引数据量很大,超过硬件存放单个文件的限制,就会影响查询请求的速度。Es引入了分片技术;
2.将一个完整的index分成若干部分存储在相同或不同的节点上。
3. 每个分片都有自己搜索,更新,删除等和index一样全部功能的一小块。
4.好处:水平分割和扩展我们存放的内容索引;分发和并行跨碎片操作提高性能/吞吐量;
5.假设索引为firsttime,在elasticsearch-xx/data/elasticsearch/0/indices/firsttime下有5个分片,从0-4;
2. 副本:replica
1.冗余备份,防止数据丢失;
2.负载均衡
一个索引中含有主分片的数量,默认值为5,在索引创建后这个值是不能被更改的。
每一个主分片关联的副本分片的数量,默认值为1,这个设置在任何时候都可以修改。
对副本分片数量的修改:
假设主分片为4,副本分片为2,则就有12条分片,其中4条主分片,8条副分片;
以上是关于ES系列基本概念的主要内容,如果未能解决你的问题,请参考以下文章