近实时有两种意思,一种是从写入数据到能够被搜索到有一个小延迟(大概一秒),还有一种就是基于ElasticSearch 进行搜索和分析能够达到秒级, 下图来讲明一下近实时的效果。数据库
集群里面包含多个节点,每一个属于那个集群都是经过一个配置(集群名称,默认是elasticSearch)来决定的,对于中小型企业来讲,刚开始一个集群就一个节点很正常。json
集群里面的一个节点,节点也有一个名称,默认是随机分配的,节点名称很重要(在运维管理操做的时候),每一个节点默认会去加入一个名叫 elasticsearch 的集群, 若是直接启动一堆节点,那么他们会自动组成一个名为 elasticsearch 的集群, 固然一个节点也能够组成一个 elasticsearch 集群,只不过状态是yellow(警告),正常的状态应该是green(正常),这个在后面会详细说明为何会有yellow和green之分。服务器
es中最小的数据单元,它能够是一条简单的客户数据,一条商品分类数据,一条订单数据,一般用json结构表示,每一个index下的type中,均可以存储多个document。下面就举例一个简单的商品document。数据结构
product document { "product_name":"田园布艺沙发", "product_id":"1", "category_name": "沙发", "category_id": "2" }
一个type里面能够有不少个document,就至关于一个表里面有条记录是一个意思,在ElasticSearch6.0版本以前一个索引是能够有多个type的,可是在6.0以后就只能有一个type了。在7.0事后将会彻底抛弃type,为何type会慢慢的被ElasticSearch移除呢?咱们都把type比喻成一张表,把index比喻成数据库,可是在数据库里面的表都是相互独立的,各个字段之间互不影响,可是在ElasticSerarch中,多个type里面若是有相同字段,那么多个type就会同用同一个字段,也就是说他们并不会区分开来,因此后期就慢慢的将type潜移默化了。下面的例子将会展现document在type里面是怎么存储的(这里type和document的数据关系,并非表明es里面数据结构就是这样,这里只是演示,了解就行)。运维
{ "type":[ { "product_name":"田园布艺沙发", "product_id":"1", "category_name":"布艺沙发", "category_id":"2" }, { "product_name":"田园实木沙发", "product_id":"2", "category_name":"实木沙发", "category_id":"3" } ] }
在6.0版本以前index里面能够存多个type,可是在6.0以后就只能存一个type了,这个type里面又有不少的document。就像是下面这样(这里只是体现一个index和type还有document的数据关系,并非表明es里面数据结构就是这样,这里只是演示,了解就行)elasticsearch
{ "index":{ "type":[ { "product_name":"田园布艺沙发", "product_id":"1", "category_name":"布艺沙发", "category_id":"2" }, { "product_name":"田园实木沙发", "product_id":"2", "category_name":"实木沙发", "category_id":"3" } ] } }
ElasticSearch 中特别重要的一个,先简单介绍一下什么是shards,它是一个数据的分片,这里先大概说明一下,下面就来详细解释一下这个shards为何重要了。分布式
它的做用就是shard的备份,直接上例子,好比咱们的节点7宕机了,那么这个节点上面的数据就丢失了没法获取该节点上面的数据,这个时候估计大家也猜到,replica的用处了,它就是shard的备份,若是某个主节点宕机了,那么就会到节点的备份分片replica上面去查询数据(replica的做用不只仅只有备份,还能够提升吞吐量等等),一个replica存储的数据和shard上是同样的。性能
这个时候就能够解释为何只有单台服务器时集群状态的yellow的了,由于ElasticSearch不容许同一个索引额shard和replace出如今同一台机器上面,由于这样若是这台机器宕机了,那么就没法获取数据了,全部会爆出警告,最低(不发生警告)的集群配置是2台服务器,一台存全部的shard,另外一台出全部的replace,这就是replace的最重要的做用了。spa