本篇介绍一些ES基本且重要的概念,这些概念是ES的核心数据库
基本概念服务器
集群(Cluster)网络
一个集群由一个或者多个节点组成。它给咱们提供索引和搜索的功能。每一个集群是由集群名来区分的,因此集群名字很重要。ES的默认集群名为elasticsearch。一个集群中的节点就会经过这个名字来加入集群。 在测试环境中能够不修改集群名称,可是强烈建议生产环境下修改集群名。数据结构
节点(Node) 一个节点是一个集群中的组成部分,它储存你的数据而后参与提供索引和搜索的功能。它能够是单独的一台服务器也能够是同一台服务器(ES能够在一台服务器上启动多个节点实例)。 一个节点经过配置集群名称来自动搜索集群并加入。默认状况下都会自动加入“elasticsearch”这个集群,毕竟默认的集群名就是“elasticsearch”。自动加入集群还须要开启须要加入节点的自动嗅探功能。固然启动一个节点也是能够的。elasticsearch
索引(Index) 索引就是拥有类似特征文档的集合,就至关于传统的关系型数据库中的数据库(database)概念。例如一个用户的索引,一个产品的索引等等。一个索引有一个名字(必须全小写),对文档增删改查的时候都须要使用这个索引,一个集群中你能够建立N+1个索引。分布式
类型(Type) 一个索引中能够定义一个或者多个类型。一个类型是你索引上的逻辑分类,至关于传统关系型数据库中的表(table)。不一样的 Type 应该有类似的结构(schema),举例来讲, id 字段不能在这个组是字符串,在另外一个组是数值。这是与关系型数据库的表的 一个区别 。性质彻底不一样的数据(好比 products 和 logs )应该存成两个 Index,而不是一个 Index 里面的两个 Type。 根据 规划 ,Elastic 6.x 版只容许每一个 Index 包含一个 Type,7.x 版将会完全移除 Type。性能
文档(Document)测试
一个文档是一个能够被索引的基础信息单元。通常对象会包含复杂数据结构,日期、地理位置、方位等信息,传统的关系型数据库不得不把有关系的信息拆分为行列存储,而后查询出来后进行重组。但是ES不须要这样,ES是面向文档(document oriented)的,这意味着你能够存储整个对象或者文档(document),不只能够存储还会为每一个文档创建索引以方便搜索。同时你也能够对文档进行排序、过滤、搜索等操做。对象
分片和复制片(shards and replicas)排序
一个索引存储自己没有数量,大小限制可是一台单机的存储是有限的并且极大的数据处理也会比较缓慢。为了解决这个问题ES提供了将索引划分红多片的能力,这些片就叫分片(这也是ES天生支持分布式的缘由)。
在你建立索引的时候能够指定分片数量。每一个分片都是一个单独的个体,能够独自放在集群的任何节点上工做。
分片有这样的优势:
分片如何分布和分布查询都由ES管理,用户无需关心。
在一个网络/云的环境里,失败随时均可能发生。在某个分片/节点由于某些缘由处于离线状态或者消失的状况下,故障转移机制是很是有用且强烈推荐的。为此, ES容许你建立分片的一份或多份拷贝,这些拷贝叫作复制分片,或者直接叫复制。
复制片会和主分片不在一个节点,这样保证主节点/复制片节点故障时候还要一个节点能够正常工做。
下一节会讲一下ES的安装,索引,类型,文档建立,查询,删除等知识