【问题标题】:Overhead of empty elastic search indices on performance空弹性搜索索引对性能的开销
【发布时间】:2021-02-05 10:05:23
【问题描述】:

我们将 Elastic 搜索用于全文搜索用例。数据是跨不同对象收集并存储为 ES 文档的元数据。每当主数据更新时,我们也会更新 ES 中的文档。所以,基本上它不是一个日志记录用例。

一旦有租户加入我们的应用程序,我们就会创建一个 ES 索引(一个主分片和 1 个副本分片)。这是为了确保在创建第一个对象时 ES 索引已准备就绪。

我们预计索引中的数据量不会很大。每个索引的数据范围可能在几百 MB 之间。所以这是一个相对空的索引。

此外,全文搜索是应用程序中的一项可选加载项功能,因此并非所有租户都选择相同,但我们的技术团队建议预先创建索引。

这些索引对 ES 性能的开销是多少?我们是否在做与 ES 最佳实践不同的事情?

感谢任何输入。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    空 Elasticsearch 索引没有太多开销,因为其中实际上没有数据,只有集群中的每个节点都具有的集群状态(索引映射、设置等)中存在空索引数据的地方以及任何索引映射或设置的更改,即索引元数据更新集群状态并在 ES 集群中的所有节点上更新。

    如果您有足够的内存和 ES 堆大小,则完全不必担心这些空索引,考虑到您的用例,IMO 是有意义的。

    【讨论】:

    • 还值得注意的是,每个索引/分片都有底层段文件,并且承载该索引分片的节点需要在这些段上保留文件句柄,并且有最大数量的文件句柄可用。所以有太多的索引,即使是空的,也会让你用完文件句柄,所以这也需要被监控。 GET _nodes/stats?filter_path=**.*file_descriptors 将为您提供这些指标。
    • @Val 感谢您的宝贵意见,只是一个疑问,当索引没有任何文档时,为什么会创建段?
    • 我怀疑索引在入职后长时间保持空白,否则为什么用户首先会入职?通过“相对空的索引”,我假设 OP 的意思是“其中可能包含很少文档的索引”
    • 感谢您在 cmets 中的回答和信息丰富的线程。确实,大多数索引都有存储在几 MB 甚至更少(相对空)的文档,但是,有数百个索引没有文档(完全空),客户没有购买搜索功能.这种方法有缺点吗?
    • @tyrion,如前所述,没有文档的空索引只会在集群状态下占用空间,如果它只有几 MB,并且在更新集群日志中的集群状态时没有超时,这是可以的.
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多