本文介绍了Solr的4 - 缺少必填字段:UUID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在生成使用Solr4的dataImportHandler一个UUID的问题。我试着从现有的MySQL数据库导入。
我的schema.xml中包含:
<&领域GT; <字段名=的「uuidTYPE =的uuid收录=真正的存储=真所需=真/> <字段名=ID类型=字符串索引=真正的存储=真所需=真/>
<字段名=地址TYPE =text_general收录=真正的存储=真/>
<字段名=城市TYPE =text_general收录=真正的存储=真/>
<字段名=县类型=字符串索引=真正的存储=真/>
<字段名=纬度TYPE =text_general收录=真正的存储=真/>
<字段名=LNGTYPE =text_general收录=真正的存储=真termVectors =真termPositions =真termOffsets =真/>
<字段名=价格型=浮动收录=真正的存储=真/>
<字段名=卧室TYPE =浮动收录=真正的存储=真/>
<字段名=形象类型=字符串索引=真正的存储=真/> <字段名=区域TYPE =location_rpt收录=真正的存储=真/> < defaultSearchField>地址< / defaultSearchField> <字段名=_ version_TYPE =长收录=真正的存储=真/>
<字段名=TEXT类型=text_general收录=真正的存储=假多值=真/> < /田> <唯一键>&的uuid LT; /唯一键>
,然后在<各类>
<字段类型名称=的「uuid级=solr.UUIDField收录=真/>
我的solrconfig.xml中包含:
< requestHandler NAME =/ dataimport级=org.apache.solr.handler.dataimport.DataImportHandler> < updateRequestProcessorChain名=的「uuid>
<处理器类=solr.UUIDUpdateProcessorFactory>
< STR NAME =字段名>&UUID LT; / STR>
< /处理器GT;
<处理器类=solr.RunUpdateProcessorFactory/>
< / updateRequestProcessorChain> < LST NAME =默认>
< STR NAME =配置>数据-config.xml文件< / STR>
< / LST>
每当我运行更新,一些文档插入行,买那么多回用:
org.apache.solr.common.SolrException:[DOC = 204]缺少必要的字段:UUID
解决方案
通过走出去的例子在该链接应
< requestHandler NAME =/ dataimport级=org.apache.solr.handler.dataimport.DataImportHandler>
.........
< LST NAME =默认>
< STR NAME =配置>数据-config.xml文件< / STR>
< STR NAME =update.chain>&UUID LT; / STR>
< / LST>
< / requestHandler>< updateRequestProcessorChain名=的「uuid>
<处理器类=solr.UUIDUpdateProcessorFactory>
< STR NAME =字段名>&UUID LT; / STR>
< /处理器GT;
<处理器类=solr.RunUpdateProcessorFactory/>
< / updateRequestProcessorChain>
<fields>
<field name="uuid" type="uuid" indexed="true" stored="true" required="true" />
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="address" type="text_general" indexed="true" stored="true"/>
<field name="city" type="text_general" indexed="true" stored="true" />
<field name="county" type="string" indexed="true" stored="true" />
<field name="lat" type="text_general" indexed="true" stored="true" />
<field name="lng" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="price" type="float" indexed="true" stored="true"/>
<field name="bedrooms" type="float" indexed="true" stored="true" />
<field name="image" type="string" indexed="true" stored="true"/>
<field name="region" type="location_rpt" indexed="true" stored="true" />
<defaultSearchField>address</defaultSearchField>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
</fields>
<uniqueKey>uuid</uniqueKey>
<fieldType name="uuid" class="solr.UUIDField" indexed="true" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">uuid</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
Whenever I run the update, some docs are inserted ok , buy many return with:
org.apache.solr.common.SolrException: [doc=204] missing required field: uuid
Going by the example at link it should be
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
.........
<lst name="defaults">
<str name="config">data-config.xml</str>
<str name="update.chain">uuid</str>
</lst>
</requestHandler>
<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">uuid</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
这篇关于Solr的4 - 缺少必填字段:UUID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!