Solr 报错之“Error creating document异常

问题

SolrWriter Error creating document : SolrInputDocument(fields) 跟字段相关的值不对应

最起初我更改了数据库字段类型
字段用的是tinyint类型才发现Solr中没有这个类型

参数类型
!!!上图所示,Solr所支持的数据类型!!!
后面还有一些类似text_*为前缀的数据类型,都是默认自带的分词器类型(例如下载的IK中文分词器),这里不在强调!!

解决办法两种

在url后面加上参数

&serverTimezone=UTC&tinyInt1isBit=false
注意要给&符号转义…

<dataSource type="JdbcDataSource" 
			driver="com.mysql.jdbc.Driver" 
			url="jdbc:mysql://127.0.0.1:3306/nsi_database?useSSL=false&amp;serverTimezone=UTC&amp;tinyInt1isBit=false" 
			user="root" 
			password="123456"/> 
<document>

    <entity name="nsi_post_category_item" query="SELECT * FROM `nsi_post_category_item` WHERE is_check = 1">
        <field column="item_id" name="itemId"/> 
        <field column="title" name="title"/> 
        <field column="summary_desc" name="summaryDesc"/> 
        <field column="content" name="content"/> 
		<field column="post_type" name="postType"/> 
        <field column="post_icon" name="postIcon"/> 
        <field column="comment_num" name="commentNum"/> 
        <field column="share_num" name="shareNum"/> 
        <field column="watch_num" name="watchNum"/> 
        <field column="collect_num" name="collectNum"/> 
        <field column="tag" name="tag"/> 
        <field column="open_id" name="openId"/> 
        <field column="avatar" name="avatar"/> 
        <field column="nick_name" name="nickName"/> 
        <field column="is_check" name="isCheck"/> 
    </entity>
    
</document>
</dataConfig>

分析:

  • tinyInt1isBit默认参数是true,并且Mysql的tinyint类型存储长度为1,Solr会把这个字段的类型转换为Boolean类型
  • 设置为false会把tinyint的数据转换为Integer类型,也就是对应Solr中的pint类型,这样就可以导入Solr索引库里
  • 避免tinyint字段类型存储数字格式长度为1,tinyint(1) 在Java中也会被默认转换成True/False
  • tinyInt1isBit这个参数在使用时注意大小写

不使用tinyint

不使用tinyint改用int类型

在这里插入图片描述

  • 修改你的core的 conf/managed-schema.xml配置文件
  • 将mysql属性和Solr里面的字段类型对应上

数据类型

  • varchar对应的就是string,也可以是对应分词器类型text_ik
  • int对应的pint或者plong

最后一步

重启Solr,查看Logging

红线的位置通常都会打印出错误的日志,或者一些同步数据时候的异常信息

日志

Reload一下

当你更改了配置文件,或者修改了Mysql中要同步的数据类型或字段名,再或者往索引库中添加了新的数据时,记得Reload一下能解决很多问题
注意有多个Core的时候,要选择你要更改的Core

扫描二维码关注公众号,回复: 10790172 查看本文章

结果

发布了24 篇原创文章 · 获赞 33 · 访问量 2391

猜你喜欢

转载自blog.csdn.net/weixin_41241629/article/details/104229472