阻止Solr创建默认副本字段

时间:2019-04-10 05:55:11

标签: solr solrcloud

当我在Solr中添加任何字段然后对一些数据建立索引时,Solr会为此字段创建一个副本字段。

例如,我添加了一个名为app_id的字段,并在建立索引后在app_id和另一个名为app_id_str的字段中都有数据。

有什么办法可以防止创建这些副本字段?

2 个答案:

答案 0 :(得分:2)

Schema.xml

schema.xml 中的通配符中以通配符搜索copyField定义。

  

copyField命令可以在目标中使用通配符(*)   仅当源参数也包含一个参数时,才可以使用该参数。 copyField   使用源字段中匹配的glob作为目标字段名称   将源内容复制到其中。

您需要评论以下内容:

<copyField source="*" dest="*_str"/>

您可能还具有一些类似以下内容的dynamicField定义,这些定义会创建任何复制的字段(否则,您可能还记得明确定义了诸如app_id_str这样的字段):

<dynamicField name="*_str" type="string"/>

SchemaLess模式

  

在内部,模式API和无模式更新处理器   使用相同的托管模式功能。

如果在“无缝模式”下使用Solr,则可以通过使用Schema API来执行相同的操作:

或按照Kusal所述,在 solrconfig.xml 中重新配置专用更新处理器。

请参阅this section下标题为“ 您仍然可以明确表示”的段落。

答案 1 :(得分:2)

我假设您使用的是相当新的Solr版本。 (我没有足够的声誉来评论问题)您可以防止Solr在索引时间内自动创建副本字段。您只需要配置“ add-schema-fields”更新处理器即可不动态创建副本字段。

  1. 打开您要禁止自动添加副本字段的核心的solrconfig.xml文件。
  2. 注释掉配置以禁用在文本字段(或配置为生成复制字段的任何类型的字段)上创建复制字段。

enter image description here

  1. 保存并重新启动Solr实例。
  2. 为文档编制索引。