gpt4 book ai didi

elasticsearch - 除了Elasticsearch中的反向索引(它使搜索如此之快)外,内存中还加载了什么?

转载 作者:行者123 更新时间:2023-12-03 00:34:37 28 4
gpt4 key购买 nike

Elasticsearch内存中有哪些东西可以使搜索如此快速?
是所有json本身都在内存中,还是仅倒排索引和映射将在内存中24 * 7?

最佳答案

这是一个很好的问题,然后简而言之就是:

不仅仅是数据存储在内存中,Elasticsearch的搜索速度如此之快

不能保证倒排索引总是存储在内存中。我没有找到直接的证明,所以我从以下推断:

  • 索引段可能未完全加载到内存中(请参见 _cat/segments 输出参数size.memory)
  • Tune for search speed中的第一个建议是:

    Give memory to the filesystem cache


  • 这意味着Elasticsearch还以非常智能的方式将索引数据存储在磁盘上,因此文件系统本身可以通过经常可访问的搜索来帮助它。

    这样的“生活黑客”之一是,对于映射中的每个字段,都有一个不同的倒排索引,如果频繁查询,倒排索引将足够小以被FS有效地缓存(并且您从未查询过的字段只会占用磁盘空间)。

    那么Elasticsearch会在内存中存储原始JSON吗?

    不,它将它们存储在名为 _source 的特殊字段中。检索它并不很快,这就是为什么 scripts访问 _source的执行速度可能会很慢的原因。

    还有其他使Elasticsearch快速运行的数据结构吗?

    是的,例如,用于聚合的那些:
  • doc_values ,是精确值字段的面向列的存储(此功能使Elasticsearch有点Columnar DB),但是它又不是最初在内存中,并且在频繁使用时会被“缓存”;
  • fielddata ,除了text字段外,执行类似的工作;它实际上存储在内存中,但是效率不高,默认情况下处于关闭状态。

  • Elasticsearch还可以做什么来加快搜索速度?

    它使用更多的缓存: Shard request cachingNode query cache。如您所见,它并不像“仅将数据放入内存”那样简单。

    希望有帮助!

    关于elasticsearch - 除了Elasticsearch中的反向索引(它使搜索如此之快)外,内存中还加载了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53624581/

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