开发者社区> 问答> 正文

Index是什么意思?

Index是什么意思?

展开
收起
游客y7f4tqjnapsic 2021-12-14 15:33:25 835 0
1 条回答
写回答
取消 提交回答
  • 在 Elasticsearch 中,索引是文档的集合。

    image.png

    每个 Index 一个或许多的 documents 组成,并且这些 document 可以分布于不 同的 shard 之中。

    image.png

    很多人认为 index 类似于关系数据库中的 database。这中说法是有些道理,但是 并不完全相同。其中很重要的一个原因是,在 Elasticsearch 中的文档可以有 object 及 nested 结构。一个 index 是一个逻辑命名空间,它映射到一个或多个主分片,并且可 以具有零个或多个副本分片。

    每当一个文档进来后,根据文档的 id 会自动进行 hash 计算,并存放于计算出来 的 shard 实例中,这样的结果可以使得所有的 shard 都比较有均衡的存储,而不至于 有的 shard 很忙。

    shard_num = hash(_routing) % num_primary_shards

    在默认的情况下,上面的 _routing 既是文档的 _id。如果有 routing 的参与,那么这些文档可能只存放于一个特定的 shard,这样的好处是对于一些情况,我们可以很 快地综合我们所需要的结果而不需要跨 node 去得到请求。比如针对 join 的数据类型。

    从上面的公式我们也可以看出来,我们的 shard 数目是不可以动态修改的,否则之 后也找不到相应的 shard 号码了。必须指出的是,replica 的数目是可以动态修改的。

    资源来源于《Elastic Stack 实战手册(早鸟版)》下载地址:https://developer.aliyun.com/topic/download?id=1295

    2021-12-14 16:48:05
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载