gpt4 book ai didi

caching - 字段作为 Doc_Values 以减少内存使用

转载 作者:行者123 更新时间:2023-11-29 02:53:36 25 4
gpt4 key购买 nike

目前我们面临很多这样的异常:

ElasticsearchException[org.elasticsearch.common.breaker.CircuitBreakingException: Data too large, data for field [field1] would be larger than limit of [24108466176/22.4gb]]

在对上述异常进行一些调查之后,field1 似乎占用了大量的 fielddata 缓存大小 以及我们称之为 field2 的另一个字段

GET/_stats/fielddata?fields=field1,field2 的结果:

"total": {
"fielddata": {
"memory_size_in_bytes": 260456614595,
"evictions": 1226307,
"fields": {
"field1": {
"memory_size_in_bytes": 76629429704
},
"field2": {
"memory_size_in_bytes": 97600838429
}
}
}
}

注意:两个字段都是not_analyzed。 Field1 在搜索查询中被大量使用,而 field2 则没有那么多。

因此,通过 es 文档的 doc value 部分,这些字段可以存储为 doc values 以减少堆使用。

这是解决上述异常等内存问题的好方法吗?

文档还说通过将字段存储为 doc 值,索引会变大,有没有办法计算这种增加?

最佳答案

Doc_Values 太棒了!

  • 对于新索引,这些字段的fielddata size为0:

    "total": {
    "fielddata": {
    "memory_size_in_bytes": 5394813851,
    "evictions": 112,
    "fields": {
    "field1": {
    "memory_size_in_bytes": 0
    }
    }
    }
    }
  • 不再有Data too large在这些字段上执行查询时出现异常,更不用说这些查询现在执行得更快了,我猜是因为 CircuitBreaker 没有不要经常旅行。

  • 对于性能...索引略有下降,无需担心。

  • 在我们的例子中,索引大小现在大约增加了 20%。

关于caching - 字段作为 Doc_Values 以减少内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904771/

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