首页 > IT基础架构 > > elastic search--术语深悉
ES的强大始终让人着迷,本来想继上篇elastic search--集群搭建写下集群健康状况,但是涉及到很多专业术语:集群、节点、分片以及索引等,所以这篇来总结下这几个术语的真理与内涵,然后把这几个概念深入的了解下,然后后面就可以更清晰的了解ES的存储、映射、读取等机制。否则在模糊中探索总是让人不爽。
在ES中提到最多的就是索引、索引文档,索引是什么意思,官方的解说:存储数据到 Elasticsearch 的行为叫做索引。其实在关系型数据库中(sql server、oralce等)就是建立一个数据库。然后索引文档其实就是查询数据库中的每一行数据。
一个 ES 集群可以 包含多个 索引 ,相应的每个索引可以包含多个类型 。这些不同的类型存储着多个 文档 ,每个文档又有多个属性 。
注意:索引 (index) 的复数词为 indices 或 indexes (后面会用到)
转换成关系型数据库的描述就是:
一个ES集群可以包含多个 数据库,相应的每个数据库可以包含多个 表。这些不同的表存储着很多 行,每行数据又有多列。
这样就对应上了:索引---》数据库
类型---》表名
文档---》行
属性---》列
ES中索引+类型+Id确定一个唯一的文档,所以就不用我这里多说了吧!
其实再上篇中已经讲解过了,就是运行一个elasticsearch的实例就是一个节点。
集群的概念更好理解,就是多个相同cluser.name的节点集合,就是在/config/elasticsearch.yml中设置了cluser.name='web.news.query',就构建成了一个集群。
这个分片就有意思的多了,其实我们并不需要太深入了解分片的底层原理,因为涉及的东西太多太多了,讲了多了反而更让人模糊了。比如:分片是什么?分片是一个是一个 Lucene 的实例,那Lucene 是什么?打住,不要继续深究下去。而是换一种思维,分片是一个Lucene的实例,分片是索引的一个最小单元,也就是数据存储的最小的一个单元。
什么意思呢?这样理解文档(一行数据)存储在分片内。在简单理解点,就是磁盘上的一块空间。ES集群把分片分在不同的节点内。但是有一点要注意,就是分配存储的是索引中部分数据。
当然可能又来了另一个问题了,既然是索引的部分数据,那查询的时候,怎么知道文档是从哪个节点下的哪个分片中读取的数据呢?
是不是更有意思了,这个问题暂时先不回答,这个呢先作为一个问题留着,后面经过实战后再进一步解说。
集群健康是一个很值得探讨的问题,也是一个很重要必需关注的问题,因为这个往往影响的是数据能否正确获取到。先看几个颜色吧:
green:绿色
yellow:黄色
red:红色
(嗯,应该翻译的没有错)。这几个颜色代表什么意思呢?先来看一个例子,现在只留下一个节点:5001---》36001(就是留下端口为5001的ES节点),这个时候请求:
http://192.168.1.2:36001/_cluster/health返回结果如下:
{
"cluster_name": "web_news_query",
#重点
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 4,
"active_shards": 4,
"relocating_shards": ,
"initializing_shards": ,
"unassigned_shards": 4,
"delayed_unassigned_shards": ,
"number_of_pending_tasks": ,
"number_of_in_flight_fetch": ,
"task_max_waiting_in_queue_millis": ,
"active_shards_percent_as_number": 50
}status是“yellow”黄色?好了这时候解说下吧,解说下yellow代表的意义:
yellow: 所有的主分片都正常运行,但不是所有的副本分片都正常运行。(获取产生了疑问:副本分片是什么鬼?结合分片下一篇会详细解说)
这个时候启动下 5002--》36002节点,启动后再重新执行下上面集群健康命令,如下:
{
"cluster_name": "web_news_query",
"status": "green",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 4,
"active_shards": 8,
"relocating_shards": ,
"initializing_shards": ,
"unassigned_shards": ,
"delayed_unassigned_shards": ,
"number_of_pending_tasks": ,
"number_of_in_flight_fetch": ,
"task_max_waiting_in_queue_millis": ,
"active_shards_percent_as_number": 100
}status:变成了“green”绿色?那让我们再看下green代表的意义:
green: 所有的主分片和副本分片都正常运行。
那还剩最后一个颜色red,官网上是这样说的:有主分片没能正常运行。
但是各种试验后一直没有出现,下一篇来看看各种实验的过程。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3132978/ ,如需转载,请注明出处,否则将追究法律责任。