gpt4 book ai didi

java - 如果 doc 值用于 Elasticsearch 中的某个字段,那么存储该字段是否多余?

转载 作者:行者123 更新时间:2023-12-01 12:48:36 25 4
gpt4 key购买 nike

据我了解,在elasticsearch中存储字段有两个目的:

  1. 可以直接从磁盘检索该字段,无需解析_source。例如,当使用字段查询时就会发生这种情况。
  2. 如果禁用 _source,则存储的字段将构成返回的文档。

但是,存储字段需要额外的磁盘空间,并且有理由更愿意在 Elasticsearch 中保持 _source 启用,因此可能仅对于较大的文档才值得。

同样,文档值存储您可以通过文档查找的字段。看起来这些字段是按字段而不是按文档在磁盘上聚集的,这使得从不同文档中检索大量相同字段(排序、聚合等)更加有效。这样做不是为了这些操作而在内存中缓存所有存储的字段。

我的问题是...如果您有文档值,是否仍然存在用于存储字段的有效用例,如果是,它是什么?

最终,我试图确定 doc_values 似乎合适的字段的正确映射。

最佳答案

如果字段未存储但启用了 docValues,我不知道 elasticsearch 是否会为您检索字段值。我能告诉你的是,虽然 docValues 通常表示以列方式存储的字段(正如你所指出的,这使得排序甚至函数查询所需的批量检索变得更容易),但 lucene 将 docValues 本身视为单独的字段。

因此,在elasticsearch中,当您在字段foo上启用docvalues并最终得到相同的数据重复时,lucene将为每个文档创建一个docValues字段并复制数据从 foo 字段到它。因此,实际上在 lucene 级别并不能保证数据是重复的,但在 elasticsearch 级别却可以保证。

长话短说,您询问的此功能可以实现(如果尚未实现)

关于java - 如果 doc 值用于 Elasticsearch 中的某个字段,那么存储该字段是否多余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440847/

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