Elasticsearch基本概念介绍
1.索引(Index)
Elasticsearch索引是一组具有共同特征的文档集合。每个索引(index)包含多个类型(type),这些类型依次包含多个文档(document),每个文档包含多个字段(Fields)。在Elasticsearch中索引由多个JSON文档组成。在Elasticsearch集群中可以有多个索引。
在ELK中,当logstash的JSON文档被发送给Elasticsearch时,它们被发送为默认的索引模式“logstash-%{+YYYY.mm.dd}”。它按日划分索引,以便在需要时可以方便地搜索和删除索引。这个模式可以在日志存储的输出插件中改变。
2.文档(document)
Elasticsearch文档是一个存储在索引中的JSON文档。每个文档都有一个类型和对应的ID,这是惟一的。
如:
3.字段(Field)
文档内的一个基本单位,键值对形式(book_name : "learning elk")
4.类型(Type)
类型用于在索引中提供一个逻辑分区。它基本上表示一类类似类型的文档。一个索引可以有多个类型,我们可以根据上下文来解除它们。
5.映射(Mapping)
映射用于映射文档的每个field及其对应的数据类型,例如字符串、整数、浮点数、双精度数、日期等等。在索引创建过程中,elasticsearch会自动创建一个针对fields的映射,并且根据特定的需求类型,可以很容易地查询或修改这些映射。
6.分片(Shard)
分片是实际的物理实体用于存储每个索引的数据。每个索引都可以有大量的主和复制分片。分片分布在集群中的所有节点中,可以在节点故障或新节点添加时从一个节点移动到另一个节点。
7.主分片(Primary shard)与备份分片(replica shard)
备份分片通常驻留在一个不同的节点上,而不是主碎片,在故障转移和负载平衡的情况下,可以满足多个请求。
8.集群(Cluster)
集群是存储索引数据的节点集合。elasticsearch提供了水平的可伸缩性用以存储集群中的数据。每个集群都由一个集群名称来表示,不同的节点指明集群名称连接在一起。集群名称在elasticsearch.yml中的clustersearch.name的属性设置,它默认为“elasticsearch”:
9.节点(Node)
节点是一个单独运行的elasticsearch实例,它属于一个集群。默认情况下,elasticsearch中的每个节点都加入名为“elasticsearch”的集群。每个节点都可以在elasticsearch中使用自己的elasticsearch.yml,它们可以对内存和资源分配有不同的设置。
分成3类:
数据节点(Data Node)
数据节点索引文档并对索引文档执行搜索。建议添加更多的数据节点,以提高性能或扩展集群。通过在elasticsearch中设置这些属性,可以使节点成为一个数据节点。elasticsearch.yml配置
主节点负责集群的管理。对于大型集群,建议有三个专用的主节点(一个主节点和两个备份节点),它们只作为主节点,不存储索引或执行搜索。在elasticsearch.yml配置声明节点为主节点:
这些节点不扮演主或数据节点的角色,但只需执行负载平衡,或为搜索请求路由,或将文档编入适当的节点。这对于高容量搜索或索引操作非常有用。
1.索引(Index)
Elasticsearch索引是一组具有共同特征的文档集合。每个索引(index)包含多个类型(type),这些类型依次包含多个文档(document),每个文档包含多个字段(Fields)。在Elasticsearch中索引由多个JSON文档组成。在Elasticsearch集群中可以有多个索引。
在ELK中,当logstash的JSON文档被发送给Elasticsearch时,它们被发送为默认的索引模式“logstash-%{+YYYY.mm.dd}”。它按日划分索引,以便在需要时可以方便地搜索和删除索引。这个模式可以在日志存储的输出插件中改变。
2.文档(document)
Elasticsearch文档是一个存储在索引中的JSON文档。每个文档都有一个类型和对应的ID,这是惟一的。
如:
{
"_index" : "packtpub",
"_type" : "elk",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source":{
book_name : "learning elk"
}
}
3.字段(Field)
文档内的一个基本单位,键值对形式(book_name : "learning elk")
4.类型(Type)
类型用于在索引中提供一个逻辑分区。它基本上表示一类类似类型的文档。一个索引可以有多个类型,我们可以根据上下文来解除它们。
5.映射(Mapping)
映射用于映射文档的每个field及其对应的数据类型,例如字符串、整数、浮点数、双精度数、日期等等。在索引创建过程中,elasticsearch会自动创建一个针对fields的映射,并且根据特定的需求类型,可以很容易地查询或修改这些映射。
6.分片(Shard)
分片是实际的物理实体用于存储每个索引的数据。每个索引都可以有大量的主和复制分片。分片分布在集群中的所有节点中,可以在节点故障或新节点添加时从一个节点移动到另一个节点。
7.主分片(Primary shard)与备份分片(replica shard)
备份分片通常驻留在一个不同的节点上,而不是主碎片,在故障转移和负载平衡的情况下,可以满足多个请求。
8.集群(Cluster)
集群是存储索引数据的节点集合。elasticsearch提供了水平的可伸缩性用以存储集群中的数据。每个集群都由一个集群名称来表示,不同的节点指明集群名称连接在一起。集群名称在elasticsearch.yml中的clustersearch.name的属性设置,它默认为“elasticsearch”:
9.节点(Node)
节点是一个单独运行的elasticsearch实例,它属于一个集群。默认情况下,elasticsearch中的每个节点都加入名为“elasticsearch”的集群。每个节点都可以在elasticsearch中使用自己的elasticsearch.yml,它们可以对内存和资源分配有不同的设置。
分成3类:
数据节点(Data Node)
数据节点索引文档并对索引文档执行搜索。建议添加更多的数据节点,以提高性能或扩展集群。通过在elasticsearch中设置这些属性,可以使节点成为一个数据节点。elasticsearch.yml配置
node.master = false
node.data=true
管理节点(Master Node)
主节点负责集群的管理。对于大型集群,建议有三个专用的主节点(一个主节点和两个备份节点),它们只作为主节点,不存储索引或执行搜索。在elasticsearch.yml配置声明节点为主节点:
node.master = true
node.data=false
路由节点亦称负载均衡节点(Routing Node or load balancer node)
这些节点不扮演主或数据节点的角色,但只需执行负载平衡,或为搜索请求路由,或将文档编入适当的节点。这对于高容量搜索或索引操作非常有用。
node.master = false
node.data=false