gpt4 book ai didi

elasticsearch - 在同一数据上拥有大 IS 索引或多个小 ES 索引的优缺点是什么?

转载 作者:行者123 更新时间:2023-12-02 22:51:28 25 4
gpt4 key购买 nike

如果我有像 1T 这样的文件,我想查询 全部文件每次。

仅拥有 的利弊是什么?一大索引(shard=100)多个小索引 (shard=100/index_num) ?
无论如何我都会使用 100 个分片,但我应该拆分成更小的索引,以便可以分发聚合或其他繁重的请求吗?

最佳答案

这里有两个概念你应该明白——

  • 分片——分片是我们将数据分成不同的分区,并将整个数据的一个分区分配给一个单独的分片。每个分片可以在任何不同的机器上运行。这样我们就可以将我们的工作委托(delegate)给不同的机器。假设我们有 1000 万份文档和 10 台机器。我们设置一个 10 的分片并创建一个索引。当我们完成将这 1000 万个文档写入此索引时,每百万个文档将转到不同的分片。因此我们将有 10 个分片,每个分片有 100 万个文档。这种架构的优点是,当您实际搜索文档时,它会在每个分片中并行发生。在这种情况下,每个分片都有自己的机器,我们可以同时利用所有 10 台机器进行搜索,从而在 10 台机器中实现最大性能。
  • 一个索引有 10 个分片与 10 个索引有一个分片 相同” - 真正重要的是分片的数量。索引名称只是对分片的抽象构建。即使您对多个索引或单个索引执行搜索,性能也取决于搜索实际执行的分片数。

  • 通过分片,您将所有繁重的操作(如搜索和聚合)分发到各种机器。如果您确定以后不会有新文档,并且如果您有 1T 文档并说 100 台机器,那么最好的方法是创建一个包含 100 个分片的单个索引,然后在其中索引数据。

    理想情况下,每台机器一个分片是最好的方法。

    回复评论

    单个分片本身最大程度地使用并发性。因此,在同一台机器上使用多个分片是没有意义的。索引是相似文档的集合。在不同的场景中,它的分区基于不同的逻辑来更好地捕捉分布式行为。例如:假设我将免费订阅者的日志数据存储在只有 2 个分片的索引中,但我可能将付费用户的相同数据存储在具有 10 个分片的单独索引中。使付费用户的表现更好。所以索引可以作为不同的文档集,具有不同的语义。

    因此,为了回答评论,不同的索引是具有不同语义含义的不同信息集。在 SQL 中可以看到类似于数据库的东西。因此,我可能会将我的银行交易信息存储在一个索引中,并将我的杂货购买信息存储在另一个索引中。

    关于elasticsearch - 在同一数据上拥有大 IS 索引或多个小 ES 索引的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646532/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com