为什么Solr 6.1将JSON的单个值转换为数组



我正在从4.7升级到6.1。我以前在solrconfig.xml中指定字段,但想要移动到托管模式方式,这样我就可以随时添加带有新字段的JSON。

问题是6.1托管模式将字符串值或数字等转换为数组。这会导致排序错误,因为Solr不能对数组值进行排序,并且它会将我的单值日期转换为具有单个值的数组。

SolrConfig.xml 6.1有这个:

<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">
  <str name="defaultFieldType">strings</str>
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Boolean</str>
    <str name="fieldType">booleans</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.util.Date</str>
    <str name="fieldType">tdates</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Long</str>
    <str name="valueClass">java.lang.Integer</str>
    <str name="fieldType">tlongs</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Number</str>
    <str name="fieldType">tdoubles</str>
  </lst>
</processor>

我尝试使数据类型单一,如strings -> string,但没有工作。

谢谢!

已创建的字段是问题所在

(抱歉回答我自己的问题,但我比别人先找到了答案)

将上面的代码段更改为奇异数据类型可以工作,但是…

如果您已经使用不同的solrconfig.xml动态创建了字段,那么您重新加载它以具有单个字段,默认值将按照预期工作,但是您已经定义了现有的字段。

要解决这个问题,卸载核心,删除它,重新创建它,将solrconfig.xml更改为所需的设置,然后在其中添加docs。

之后一切正常。

我建议编辑在/var/solr/data/CORE_NAME/conf中找到的manage-schema文件,并预定义您希望保留默认行为的字段。您还可以通过管理界面添加字段来完成此操作。

最新更新