Spark-Solr Connector尝试添加具有stored = true

时间:2019-02-26 08:43:54

标签: apache-spark solr solrj lucidworks

我正在Spark 2.2.1 Cluster中将Spark-Solr连接器3.4.0与Solr云版本7.6.0一起使用。我们已经有一个带有预定义架构的Solr集合。大多数字段的stored参数设置为true,但是在某些字段中我们明确设置了stored=false。当我们尝试使用spark-solr连接器将数据推送到Solr时,出现以下错误-

org.apache.solr.api.ApiBag$ExceptionWithErrObject: error processing commands, errors: [{add-field={name=taxonomy, indexed=true, multiValued=true, docValues=true, stored=true, type=string},  errorMessages=[Field 'item_id_channel' already exists.
]}],
   at org.apache.solr.handler.SchemaHandler.handleRequestBody(SchemaHandler.java:92)
   at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
   at org.apache.solr.core.SolrCore.execute(SolrCore.java:2541)
   at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:709)
   at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:515)
   at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:377)
   at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:323)
   at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
   at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)

该错误表明item_id_channel已经存在,但是仅对于我们已定义stored=false的字段(在Solr模式中),会引发此错误。我发现连接器出于某种原因希望再次创建架构,但是它将stored参数设置为true,这与Solr上该字段的预定义架构定义冲突。

我的问题是-是否有办法(可能通过某些选项)告诉连接器我们希望将某些字段的stored设置为true?可能是为字段定义其他solr参数的通用方法吗?

1 个答案:

答案 0 :(得分:0)

我们发现了导致错误的问题。在较早版本的spark-solr连接器中有一个bug,因此,如果stored的值为true,该连接器会尝试将现有字段添加到solr模式中。此问题已在3.5.5 release中修复。因此,一旦我们将连接器升级到3.5.14版,提取就开始正常进行,没有任何错误。