Spark-Solr 连接器尝试添加已存在的字段 stored=true

Spark-Solr Connector trying to add already existing field with stored=true

我在 Spark 2.2.1 集群中使用 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 参数的通用方法?

我们找到了导致错误的问题。有一个bug in older versions of spark-solr connector, because of which the connector was trying to add existing fields to the solr schema in case the value of stored was true. This was fixed in 3.5.5 release。因此,一旦我们将连接器升级到 3.5.14 版,摄取就可以正常工作了。