我在解决solr和mysql日期问题时遇到了问题。如果我从架构中注释掉sent
字段,一切正常。但是,只要我在日期字段中添加回来,我就会为每个文档收到此错误。
org.apache.solr.common.SolrException: [doc=116] missing required field: sent
以下是我配置solr的方法。我已经过去了,以确保没有空/空日期,但没有。我也尝试过dateTimeFormat = yyyy-MM-dd'T'hh:mm:ss
并且没有设置dateTimeFormat。我也尝试过将date和tdate作为模式中发送的类型。
dataconfig.xml
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hoplite" user="root" password="root"/>
<document>
<entity name="document" query="select * from document">
<field column="ID" name="id" />
<field column="RAW_TEXT" name="raw_text" />
<entity name="email" query="select * from email where document_id='${document.id}'">
<field column="TIME_SENT" name="sent" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'"/>
<field column="BODY" name="body" />
</entity>
</entity>
</document>
</dataConfig>
schema.xml中
<field name="id" type="tint" indexed="true" stored="true" required="true" />
<field name="raw_text" type="text_general" indexed="true" stored="false" required="true" multiValued="true"/>
<field name="sent" type="date" indexed="true" stored="true" required="true" /> <!-- Import succeeds if I comment this line out -->
<field name="body" type="text_general" indexed="true" stored="true" required="true" />
答案 0 :(得分:0)
显然,对于日期,字段名称必须与列名称相同。所以将文件更改为下面修复了问题。请注意,time_sent现在既是列名也是字段名。
数据-config.xml中
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hoplite" user="root" password="root"/>
<document>
<entity name="document" query="select * from document">
<field column="ID" name="id" />
<field column="RAW_TEXT" name="raw_text" />
<entity name="email" query="select * from email where document_id='${document.id}'">
<field column="TIME_SENT" name="time_sent" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'"/>
<field column="BODY" name="body" />
</entity>
</entity>
</document>
</dataConfig>
schema.xml中
<field name="id" type="tint" indexed="true" stored="true" required="true" />
<field name="raw_text" type="text_general" indexed="true" stored="false" required="true" multiValued="true"/>
<field name="time_sent" type="date" indexed="true" stored="true" required="true" /> <!-- Import succeeds if I comment this line out -->
<field name="body" type="text_general" indexed="true" stored="true" required="true" />