1. Elasticsearch对复杂分布式机制的透明隐藏特性

1.1)分片机制

1.2)集群发现机制

1.3)shard负载均衡

1.4)shard副本,请求路由,集群扩容,shard重分配

2. Elasticsearch的垂直扩容与水平扩容

垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈;

水平扩容:普通服务器组织在一起,就能构成强大的计算和存储能力;

3. 分布式架构

ES中节点时平等的,每个节点都能接受请求,他会自动路由请求到对应的node上,在获取到数据的时候,在把接受到的数据返回;

master节点:他是负责管理ES中元数据,维护索引的元数据和集群的元数据;默认情况下,会自动选择一台节点,作为master节点,master节点不承载所有的请求,所以不会单点瓶颈;

4.shard & replica机制

1)index包含多个shard;

2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力;

3)增减节点时,shard会自动在nodes中负载均衡;

4)primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard;

5)primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改;

6)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard;

7)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上;

5. 索引创建时的设置

PUT /test_index
{
       "settings" : {
            "number_of_shards" : 3,
            "number_of_replicas" : 1
       }
}

6. Elasticsearch的容错机制

1)master node 宕机,一个primary shard就没了,此时就不是所有的primary shard 都active了,所以status=red;

2)容错第一步:master选举,选择另一个节点为新的master;

3)容错第二步:新的 master将丢掉的primary shard的节点的replica shard提升为primary shard, 此时的cluster status=yellow。因为primary shard 全部是active了,但是少了一个replica shard;

4)容错第三步:重启故障的node,new master 将缺失的数据copy一份到该node上,该node还是会使用之前的数据,只是同步一下宕机之后发生的修改;

7. Elasticsearch的元数据

1) _index元数据

1.1)代表一个document存放在哪个index中

1.2)类似的数据放在一个索引,非类似的数据放不同索引

1.3)index中包含了很多类似的document:类似是什么意思,其实指的就是说,这些document的fields很大一部分是相同的,你说你放了3个document,每个document的fields都完全不一样,这就不是类似了,就不太适合放到一个index里面去了。

1.4)索引名称必须是小写的,不能用下划线开头,不能包含逗号;

2)  _type元数据

2.1)代表document属于index中的哪个类别(type)

2.2)一个索引通常会划分为多个type,逻辑上对index中有些许不同的几类数据进行分类:因为一批相同的数据,可能有很多相同的fields,但是还是可能会有一些轻微的不同,可能会有少数fields是不一样的;

2.3)type名称可以是大写或者小写,但是同时不能用下划线开头,不能包含逗号;

3) _id元数据

3.1)代表document的唯一标识,与index和type一起,可以唯一标识和定位一个document;

3.2)我们可以手动指定document的id(put /index/type/id),也可以不指定,由es自动为我们创建一个id;

3.2.1 手动指定document id

根据应用情况来说,是否满足手动指定document id的前提:

一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做员工检索功能。这个时候,数据首先会在网站系统或者IT系统内部的数据库中,会先有一份,此时就肯定会有一个数据库的primary key(自增长,UUID,或者是业务编号)。如果将数据导入到es中,此时就比较适合采用数据在数据库中已有的primary key。

put /index/type/id

PUT /test_index/test_type/2
       {
        "test_content": "my test"
       }

3.2.2、自动生成 document id

post /index/type

POST /test_index/test_type
          {
        "test_content": "my test"
         }

自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突;

4) _source元数据

put /test_index/test_type/1
{
"test_field1": "test field1",
"test_field2": "test field2"
} get /test_index/test_type/1 {
"_index": "test_index",
"_type": "test_type",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"test_field1": "test field1",
"test_field2": "test field2"
}
}

_source元数据: 我们在创建一个document的时候,使用的那个放在request body中的json串,默认情况下,在get的时候,会原封不动的给我们返回回来。

定制返回结果: GET /test_index/test_type/1?_source=test_field1,test_field2

Elasticsearch分布式机制和document分析的更多相关文章

  1. Elasticsearch学习笔记(四)ElasticSearch分布式机制

    一.Elasticsearch对复杂分布式机制透明的隐藏特性 1.分片机制: (1)index包含多个shard,每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处 ...

  2. Elasticsearch分布式机制探究

    Elasticsearch是一套分布式的系统,分布式是为了应对大数据量隐藏了复杂的分布式机制 分片机制 shard = hash(routing) % number_of_primary_shards ...

  3. ElasticSearch 分布式及容错机制

    1 ElasticSearch分布式基础 1.1 ES分布式机制 分布式机制:Elasticsearch是一套分布式的系统,分布式是为了应对大数据量.它的特性就是对复杂的分布式机制隐藏掉. 分片机制: ...

  4. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

  5. Elastic Stack之ElasticSearch分布式集群yum方式搭建

    Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...

  6. memcache分布式部署的原理分析

    下面本文章来给各位同学介绍memcache分布式部署的原理分析,希望此文章对你理解memcache分布式部署会有所帮助哦.   今天在封装memcache操作类库过程中,意识到一直以来对memcach ...

  7. [Elasticsearch] 分布式文件存储

    本文翻译自Elasticsearch官方指南的distributed document store一章. 分布式文档存储 在上一章中,我们一直在介绍索引数据和获取数据的方法.可是我们省略了非常多关于数 ...

  8. ElasticSearch Index操作源码分析

    ElasticSearch Index操作源码分析 本文记录ElasticSearch创建索引执行源码流程.从执行流程角度看一下创建索引会涉及到哪些服务(比如AllocationService.Mas ...

  9. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

随机推荐

  1. 01_创建一个新的activity&activity配置清单文件

    今天开始学四大组件.今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者.四大组件,咱们一天一个.Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面.创建多个 ...

  2. MySQL ERROR Got an error reading communication packets

    200 ? "200px" : this.width)!important;} --> 介绍 经常会在错误日志中看到这个报错,首先我们可以从show GLOBAL statu ...

  3. Objective-C NSData/NSMutableData

    创建于完成: 2018/02/06 总览: http://www.cnblogs.com/lancgg/p/8404975.html  数据类   简介 处理比特列 Foundation/NSData ...

  4. JAVA数据类型提升

    在java中数值进行计算事会自动进行数据类型提升,例如:计算时byte,short,char类型会提升为int数据类型. 例1: class dataType { public static void ...

  5. bzoj 3979: [WF2012]infiltration【瞎搞+随机化】

    参考:https://www.cnblogs.com/ccz181078/p/5622200.html 非常服气.jpg 就是random_shuffle几次然后顺着找,ans取min... #inc ...

  6. 网站SEO优化如何让百度搜索引擎绝的你的网站更有抓取和收录价值呢?_孙森SEO

    今天孙森SEO为大家唠唠网站到底该如何优化才会让百度搜索引擎绝的你的网站更有抓取和收录价值呢? 第一方面:网站创造高品质的内容,可以为用户提供独特的价值. 1.百度作为搜索引擎,网站内容必须满足 搜索 ...

  7. 关于浮动与清浮动 float

    浮动常见的几种属性值 float {left;  right;  none;  } 主要是定义元素朝哪个方向浮动: 元素浮动后的特性 在一行显示,父级的宽度放不下,自己折行: 支持宽高等样式: 不设置 ...

  8. html 解决空格显示问题

    前端开发者都知道,在html中手动输入多个空格或者是回车,在页面解析的时候都被解析成一个空白显示,但有时候的需求要求显示多个空格,这个问题怎么解决呢?根绝我个人的经验,目前找到了以下集中解决办法: 1 ...

  9. E. Comments dfs模拟

    http://codeforces.com/contest/747/problem/E 首先,把字符串变成这个样子. hello,2,ok,0,bye,0,test,0,one,1,two,2,a,0 ...

  10. 转】用Nodejs连接MySQL

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! 用Nodejs连接MySQL 从零开始node ...