You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从CSV索引Decimal值:SOLR 6.6.2数据导入异常求助

解决Solr 6.6.2 CSV导入Decimal字段NumberFormatException问题

问题根源

你遇到的问题本质是Price字段被Solr自动推断成了整数类型(比如int/long),当导入带小数的数值时,自然会触发NumberFormatException。Solr 6+默认使用managed-schema(而非旧版的schema.xml)来管理字段,自动字段映射虽然方便,但如果首次导入的是整数,就会把字段类型锁定为整数,后续带小数的数值就无法解析了。

解决方案

下面分两种常用方式帮你修复:

方式一:用Schema API修改字段类型(推荐,Solr 6+官方推荐方式)

  1. 先确认当前Price字段的类型:
    打开Solr Admin界面,进入你的core,点击左侧菜单的Schema,在Fields搜索框输入Price,就能看到它当前的类型(比如int)。

  2. 修改字段为支持小数的类型:
    发送一个POST请求到你的Solr core的schema接口,比如:

    curl -X POST -H 'Content-type:application/json' --data-binary '{
      "replace-field": {
        "name": "Price",
        "type": "pdouble",
        "stored": true,
        "indexed": true
      }
    }' http://localhost:8983/solr/your-core-name/schema
    
    • pdouble是Solr内置的精确双精度浮点类型,适合价格这类需要保留小数的场景;
    • 如果需要更高精度(比如货币计算),可以先自定义一个DecimalField类型,再修改Price字段:
      curl -X POST -H 'Content-type:application/json' --data-binary '{
        "add-field-type": {
          "name": "currency_decimal",
          "class": "solr.DecimalField",
          "precisionStep": "8",
          "positionIncrementGap": "0"
        }
      }' http://localhost:8983/solr/your-core-name/schema
      
      然后再用replace-field把Price的类型改成currency_decimal。
  3. 重新导入CSV:修改完成后,再导入带小数的Price数据就不会报错了。

方式二:切换回传统的schema.xml(适合习惯旧版操作的用户)

如果你更熟悉Solr 4的schema.xml方式,也可以切换回去:

  1. 找到你的core目录下的conf/managed-schema文件,复制一份并重命名为schema.xml;
  2. 打开solrconfig.xml,找到schemaFactory配置,把默认的ManagedIndexSchemaFactory改成ClassicIndexSchemaFactory:
    <!-- 注释掉原来的ManagedSchema配置 -->
    <!-- <schemaFactory class="ManagedIndexSchemaFactory">
      <bool name="mutable">true</bool>
      <str name="managedSchemaResourceName">managed-schema</str>
    </schemaFactory> -->
    <!-- 添加ClassicSchema配置 -->
    <schemaFactory class="ClassicIndexSchemaFactory"/>
    
  3. 在schema.xml里找到或添加Price字段的定义,指定支持小数的类型:
    <field name="Price" type="pdouble" indexed="true" stored="true"/>
    
  4. 重启Solr服务,然后重新导入CSV即可。

额外提醒

为了避免后续再出现类似问题,建议在首次导入数据前,先手动定义好所有字段的类型(不管用API还是schema.xml),不要依赖Solr的自动推断——自动推断在数据类型复杂时很容易出错。

内容的提问来源于stack exchange,提问作者JGilmartin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:46:16