什么是文档 在Elasticsearch中,文档(document)这个术语有着特殊含义.它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasticsearch中) 文档元数据 节点 说明 _index 文档存储的地方 _type 文档代表的对象的类 _id 文档的唯一标识 _index 索引(index)类似于关系型数据库里的"数据库"--它是我们存储和索引关联数据的地方. _type 在应用中,我们使用对象表示一些"事…
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 一个集群拥有相同的cluster.name 配置的节点组成, 它们共同承担数据和负载的压力 主节点负责管理集群的变更例如增加.删除索引,或者增加.删除节点等. 而主节点并不需要涉及到文档级别的变更和搜索等操作 集群健康 1.GET /_cluster/health 返回值中的status 是我们关注…
学完ES分布式集群的工作原理以及一些基本的将数据放入索引然后检索它们的所有方法,我们可以继续学习在分布式系统中,每个分片的文档是被如何索引和查询的. 路由 首先,我们需要明白,文档和分片之间是如何匹配的,这就是路由.当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是随机的,因为我们将来要检索文档.事实上,它根据一个简单的算法决定: shard = hash(rou…
1.什么是文档? 文档由索引(_index),类型(_type),唯一标识(_id) 组成,我们为 _index(索引) 分配相关逻辑地址分片,该索引下的数据会根据索引以及类型计算哈希来分配数据存储的分片,文档内容为Json格式的文档体,注意文档中的字段名称不能包含英文的句号,实际处理过程中这里最好不要包含符号,索引名称要用小写 规则: 值得注意的是:我们要在创建索引的时候就确定好主分片的数量 并且永远不会改变这个数量:因为如果数量变化了,那么所有之前路由的值都会无效,文档也再也找不到了 2.主…
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是随机的,因为我们将来要检索文档.事实上,它根据一个简单的算法决定: shard = hash(routing) % number_of_primary_shards routing值是一个任意字符串,它默认是_id但也可以自定义. 这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数…
空集群 只有一个空节点的集群 一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载.当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据. 集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引.增加或移除节点等.主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈.任何节点都可以成为主节…
路由一个文档到一个分片中 当索引一个文档的时候,文档会被存储到一个主分片中. Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片 1 还是分片 2 中呢? 首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了.实际上,这个过程是根据下面这个公式决定的: shard = hash(routing) % number_of_primary_shards routing 是一个可变值,默认是文档的 _id ,也可…
shard = hash(routing) % number_of_primary_shards决定文档在哪个分片上,routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值. routing 通过 hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 .这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置.我们要在创建索引的时候就…
概念 映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等).+ 分析(analysis)机制用于进行全文文本(Full Text)的分词,以建立供搜索用的反向索引. 数据类型差异 在索引中有12个tweets,只有一个包含日期2014-09-15,但是我们看看下面查询中的total hits. GET /_search?q=2014 # 12 个结果 GET /_search?q=2014-09-15…
MongoDB 详细介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 整体架构: 内部架构: 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存储,易存储…