当前位置: 首页 > 知识库问答 >
问题:

在SOLR中,为什么一个字段是不存储和不索引的?

宰父子安
2023-03-14

在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=“true”)字段;

这样做的示例用例是什么?

共有1个答案

马阳晖
2023-03-14

在此上下文中需要理解的是,设置“docvalues=true”是用来替代“index=true”的:仍然使字段“可查询”,但在一个面向列(非反转)的索引中。

[...]一种在内部记录字段值的方法,对于某些目的(如排序和刻面)来说,它比传统的索引更有效。

实际上,能够在sort/facet-dedicated-field中进行原子更新是一个示例用例!

请记住,即使设置为“stored=false”,启用了docValues的字段仍然可以提取,例如,允许使用fl参数检索值。这是因为docValues以某种方式“总是”存储,如何取决于docvaluesformat默认为“memory”(意味着docvaluesformat存储在堆中)。

DocValues字段还依赖于默认为true的UseDocValuesAsStored,这意味着该字段的行为就好像它被定义stored=“true”,即使它被定义为stored=“false”

 类似资料:
  • 问题内容: 最近,我了解了索引的奇妙之处,并且性能得到了极大的提高。但是,据我所知,我似乎找不到该问题的答案。 索引很棒,但是为什么有人不能只索引所有字段以使表变得如此快呢?我确定有充分的理由不这样做,但是三十字段表中的三个字段又如何呢?30个字段中有10个?一个人应该划在哪里,为什么呢? 问题答案: 索引占用内存(RAM)中的空间;索引太多或太大,数据库将不得不在磁盘之间来回交换它们。它们还会增

  • 我已经通过了lucene索引机制。我有一些疑问,我找不到一个直截了当的答案,我仍然对我在几篇参考文献中的阅读感到困惑。 考虑使用Lucene对数据库表进行索引。 假设该表有10列,其中很少有caseid、modifiedby、modifiedtime、casename、legalname等。。。 现在,如果我创建一个索引的情况下,那么在搜索是不是可以搜索的基础上修改字段??? 假设我在2列case

  • 我对使用Solr是新手,我制作了一个新的核心并复制了默认的模式。xml到conf文件夹。我所做的更改非常微不足道。 如您所见,我将字段设置为存储=false。根据我的理解,现在进行查询搜索时不应该显示字段。但这没有发生。我尝试重新启动solr实例,并再次进行查询以索引文件。 根据Solr Wiki,这应该已经为我的文件重新编制了索引。但是,当我再次运行查询时,仍然可以看到Id。 返回的文档示例(这

  • 问题内容: 我正在尝试优化我的Elasticsearch方案。 我有一个URL字段-我不想查询或过滤它,而只是检索它。 我的理解是,定义为的字段未建立索引,但仍存储在索引中。(请参阅http://www.slideshare.net/nitin_stephens/lucene- basics中的 幻灯片5 )这应该与Lucene UnIndexed相匹配,对吗? 这使我感到困惑,是否有一种方法可以

  • 如果Elasticsearch索引中的多个类型具有相同名称的字段,则这些字段必须具有相同的映射,该映射将尝试创建“foobar”属性作为字符串和长“。。。 例如,如果您尝试放置以下索引映射: ...将返回以下错误 以下内容来自elasticsearch网站: 不同类型字段之间的冲突 在两种不同类型中具有相同名称的同一索引中的字段必须具有相同的映射,因为它们在内部由相同的字段支持。尝试更新存在于多个

  • 我有一个值,我想以我自己的类型存储该值和对该值中某些内容的引用: 有时,我有一个值,我想将该值和对该值的引用存储在同一个结构中: 有时,我甚至没有引用该值,我得到了相同的错误: 在每种情况下,我都会得到一个错误,即其中一个值“活得不够长”。这个错误是什么意思?