博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch
阅读量:7078 次
发布时间:2019-06-28

本文共 1136 字,大约阅读时间需要 3 分钟。

hot3.png

基本概念:

    在大数据眼中,行不再是行,而是一个文档,都是这么叫的,比如MongoDB,Elasticcsearch

    关系数据库,库,表,行,列

    Elasticsearch,索引,类型,文档,字段

NIO IO

    IO是面向流的,NIO是面向缓冲的。

什么是分片?为什么要分片?分片的作用在分布式集群中扮演的角色是什么?

    分片,我的理解是:假设10万个文档(在mysql中就是10万条记录),如果没有集群一说的话,就会直接将一条条记录存储到mysql,这我们都很熟悉。    

    假设集群中设置了文档的分片数是100,那么每个分片大概就会有1000个文档,这1000个文档就是一个分片,将文档集离散的分散在集群的各个节点上。

    既然是分片,那么就会有主次之说,主分片,与备份分片,出现备份是为了防止数据丢失,比如:某台机器挂了,会根据副本分片,将失去的数据找回来,但是,副本数会加大磁盘的存储量,浪费磁盘的资源,当然会造成集群中各个节点之间的数据的一个传输过程,本来如果只有主分片的话,各个节点传输一次就OK了,但是,加上副本分片的话,传输量会加大到差不多2倍以上。

    所以,在分布式集群中,数据再也不要看成一个整体了,他会断裂存储到各个节点的仓库中,当我们操作Es的时候,多个分片就会并发的执行........

索引/类型  索引就相当于mysql数据库的表,而类型标识了数据类型

索引过程:

    理解索引过程:比如一个用户发了20万个帖子,描述完毕。

    数据(可以是一个文档,即一条记录)索引的时候,会根据文档的标识ID与Es具体的算法将具有相关性的文档写到一个主分片中,比如上面的20万个帖子就会更新到一个分片中,然后copy备份分片到其他几点中,这大概是索引的过程。

搜索过程:

    搜索的时候,我们最不想碰到就是,比如,寻找某一个文档,要去集群中的各个节点都去试一下,最坏的是,试到最后一个机器的分片才找到,最好的是试了第一个机器的分片就找到,这,很明显不是Es的做法,太笨蛋了。

    Es会这样做:

    将请求封装成JSON格式,就好比mysql的一个简单的查询“select * from test where id = 1234 ”比如请求id是1234的这个文档,Es的路由算法会根据文档ID,瞬间算出,这个文档大概属于哪个机器的哪个分片中,然后将该请求直接路由到所属机器,执行搜索操作。

注意:集群内部会选择一个master出来,如果出现“脑裂”会出现多个master(这种情况不应该出现才对),所以,集群中的每一个机器都有可能被选择为master,其他机器当然会和master通信。

转载于:https://my.oschina.net/momisabuilder/blog/550265

你可能感兴趣的文章
UVA 11090 Going in Cycle!! 二分答案 + bellman-ford
查看>>
final,static,super,this
查看>>
LeetCode解题思路:442. Find All Duplicates in an Array
查看>>
解决BCG库示例程序中的一个诡异编译错误
查看>>
Linux常用命令
查看>>
gradle-遇到的问题
查看>>
C#生成唯一的字符串或者数字
查看>>
sql server标识一个字符在这一列中是第几次出现
查看>>
如何使用MFC连接Access数据库
查看>>
js与多行字符串
查看>>
基于bootstrap的后台管理系统
查看>>
基于物联网的窨井盖监测系统
查看>>
隐藏书签与书签隐藏
查看>>
Java接口回调机制详解
查看>>
PHPCMS V9静态化HTML生成设置及URL规则优化
查看>>
Mysql命令大全
查看>>
转---c#,从不是创建它的线程访问
查看>>
Linq三种查询
查看>>
深入理解this对象
查看>>
inodes 100%情况解决办法
查看>>