在Solr关于原子更新的文档中,他们提到一个字段应该是非索引的和非存储的。
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"/>
做这件事的用例是什么?
这不意味着它不会被查询,也不会在回复中返回吗?
发布于 2019-05-24 10:07:01
在这种情况下需要理解的是,设置"docValues=true"是为了替代"index=true":仍然使字段“可查询”,但在面向列的(非反转的)索引中。
..。一种在内部记录字段值的方法,与传统的索引方法相比,在某些目的(如排序和分块)中,这种方法更有效。
实际上,能够在一个排序/面专用字段中进行原子更新是一个示例用例!
请记住,即使将docValues设置为"stored=false",仍然可以获取启用了fl的字段,例如允许使用fl参数检索值。这是因为docValues在某种程度上是“始终”存储的,这取决于默认为“内存”的docValuesFormat (意味着doc值存储在堆中)。
DocValues字段还依赖于默认为true的useDocValuesAsStored,这意味着字段的行为就好像它被定义为stored="true",即使它被定义为stored="false"。
https://stackoverflow.com/questions/56276942
复制相似问题