关于solr中的存储字段与文档值

0wi1tuuw  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(259)

请帮助理解以下有关solr的内容
1)solr中存储的字段和docValues字段保存在哪里?2)如果我们为某些字段启用docvalues,与使用存储的字段相比,正常查询(仅搜索,不应用分面或排序)的性能是否更好?3)是否建议使用docValues替换所有存储的字段?

fwzugrvs

fwzugrvs1#

DocValues是一种在内部记录字段值的方法,它对于某些目的(如排序和分面)比传统索引更有效。
DocValue字段现在是面向列的字段,并在索引时构建文档到值的Map。这种方法有望减轻fieldCache的一些内存需求,并使面、排序和分组的查找速度更快。
Stored字段将一个文档的所有字段值以跨行的方式存储在一起,在检索文档时,每个文档的所有字段值一次返回,因此加载文档的相关信息非常快。
但是,如果您需要扫描字段(用于分面/排序/分组/突出显示),这将是一个缓慢的过程,因为您将不得不迭代所有文档,并在每次迭代中加载每个文档的字段,从而导致磁盘寻道。
在搜索查询期间检索到的字段值通常从存储值返回。但是,当所有字段(或模式匹配全局对象)(例如“fl=*”),具体取决于每个字段的useDocValuesAsStored参数的有效值。对于架构版本〉= 1.6,隐式默认值为useDocValuesAsStored="true"
从docValues表单撷取字段时(使用/export行程常式、串流运算式,或如果在fl参数中要求字段),必须了解一般储存字段和docValues字段之间的两个重要差异:
1.不保留顺序。对于简单检索存储字段,插入顺序为返回顺序。对于docValues,插入顺序为排序顺序。
1.多个相同的条目被折叠成一个值。因此,如果我插入值4,5,2,4,1,我的返回将是1,2,4,5。
在查询仅返回docValues字段的情况下,性能可能会提高,因为返回存储的字段需要读取磁盘和解压缩,而返回fl列表中的docValues字段只需要访问内存。
在内存不足的环境中,或者不需要对字段进行索引,DocValues非常适合进行分面/分组/筛选/排序/函数查询。
更多详情,请参阅DocValues

相关问题