3

我在 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 参数的通用方法?

4

1 回答 1

1

我们找到了导致错误的问题。在旧版本的 spark-solr 连接器中存在一个错误,因为该连接器试图将现有字段添加到 solr 模式中,以防 is 的storedtrue。这已在 3.5.5版本中修复。因此,一旦我们将连接器升级到版本 3.5.14,摄取就可以正常工作,没有任何错误。

于 2019-03-01T10:55:21.643 回答