在Solr的有关原子更新的文档中,他们提到字段应该不被索引并且不被存储。
https://lucene.apache.org/solr/guide/7_6/updating-parts-of-documents.html#in-place-update-example
仅当要更新的字段满足以下三个条件时,才使用此方法执行原子更新操作:
是非索引(indexed =“ false”),非存储(stored =“ false”),单值(multiValued =“ false”)数字docValues(docValues =“ true”)字段;
<field name="price" type="float" indexed="false" stored="false" docValues="true"/>
这样做的示例用例是什么?
这是否意味着它不可查询且未在响应中返回?
答案 0 :(得分:1)
在这种情况下要理解的是,设置"docValues=true"
是"index=true"
的替代选择:仍然使字段“可查询”,但使用面向列(非反向)的索引。 / p>
[...]内部记录字段值的方法 对于某些目的(例如排序和构面)而言, 传统索引。
实际上,能够在sort / facet-dedicated-field 中进行原子更新是一个示例用例!
请记住,即使设置为"stored=false"
,仍可以获取启用了docValues的字段,例如,允许使用fl
参数检索值。这是因为docValue以“始终”存储的方式,取决于默认情况下为“ Memory”的docValuesFormat
(意味着doc值存储在堆中)。
DocValues字段还依赖于默认为true的useDocValuesAsStored
,这意味着即使定义为stored="true"
,该字段的行为也像定义为stored="false"
一样。