elasticsearch - Elasticsearch,当文档存储时,它会分成不同的碎片吗?

标签 elasticsearch

我正在阅读一本有关Elasticsearch的书,但是对我来说尚不清楚,尝试查看文档(并没有真正谈论其架构),但是其他帖子似乎找不到相关的帖子。

说我有一个文件如下:{message: "hello world Welcome to Elastic"}

  • 当它插入elasticsearch时,将经历分析阶段并成为[“hello”,“world”,“welcome”,“to”,“elastic”]
    所以现在每个术语分散在不同的碎片上吗?
  • Elasticsearch被称为“分布式数据存储”,是因为文档被分发到不同的碎片中吗?
    在书中,它说:“如果在分布式环境中创建elasticsearch,则可以将一个索引分布到不同的节点中”。这是否意味着属于index1的分片子集存储在另一个索引中?
  • 最佳答案

  • 没有文档永远不会拆分到不同的分片中。文档ID被散列,并且该散列定义了文档将存储在哪个分片上。文档的字段将被分析为 token ,但是所有这些副产品将存储在与文档相同的碎片上。
  • 分布式数据存储意味着将索引划分为多个分片,并且这些分片可以位于不同的节点上。因此,假设您有一个带有2个主要分片的索引。如果您的集群中有1个节点,它将同时获得索引的两个分片。如果您有两个节点,则每个节点将获得一个主分片。如果您有三个节点,那么一个节点将一无所获,因为分片无法进一步拆分。如果您决定为每个主分片添加一个副本分片,则您有四个分片(2个主分+ 2个副本),那么第三个节点肯定会至少获得一个分片(主分片或副本)。

  • 由于一幅图片值(value)一千个单词,因此以下图片很好地说明了Elasticsearch的分布式性质。

    Cerebro

    所以主要的收获是:
  • 索引被划分为一个或多个主碎片(=绿色粗体)
  • 主碎片可以具有0+个副本碎片(=绿色虚线框)
  • 索引的所有主碎片和副本碎片都属于该索引(= logstash-*列)
  • 集群可以有多个数据节点(= elasticsearch-*行)
  • 碎片(无论是主碎片还是副本碎片)分布在群集的所有数据节点(上图中的所有单元)中。还值得注意的是,主节点及其副本分片永远不能位于同一节点上
  • 关于elasticsearch - Elasticsearch,当文档存储时,它会分成不同的碎片吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064364/

    相关文章:

    ruby-on-rails - Elasticsearch – 将 ids 查询与 must_not 子句结合起来

    sorting - 在Elasticsearch中对日期字段进行排序时如何指定 "precision"?

    elasticsearch更新映射冲突异常

    elasticsearch - ElasticSearch NEST在MVC应用程序的序列化请求中添加$ type

    Elasticsearch:如何在嵌套字段中获得完全匹配

    elasticsearch - 在Elasticsearch中使用非嵌套映射过滤聚合 key

    json - SugarCRM 8.0.1无法识别Elasticsearch 5.6.9索引中总字段数的增加

    amazon-web-services - 将AWS WAF日志从S3传输到ES时没有时间戳记

    ruby-on-rails - 使用Tire&Bonsai.io在Heroku上部署ElasticSearch

    elasticsearch - @在 Elasticsearch 文档中是什么意思?