Lucidworks 保存 solr 格式未知字段
Lucidworks save solr format Unknown field
我正在用 spark java 编写脚本。
我需要使用 Lucidworks - spark-solr 工具 (https://github.com/lucidworks/spark-solr)
将数据(从 DataFrame)插入到 Solr 集合中
我的 schema.xml :
<schema name="MY_NAME" version="1.6">
<field name="_version_" type="long" indexed="true" stored="true" />
<field name="_root_" type="string" indexed="true" stored="false" />
<field name="ignored_id" type="ignored" />
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="age" type="int" indexed="true" stored="true" required="false" multiValued="false" />
<field name="height" type="tlong" indexed="true" stored="true" required="false" multiValued="false" />
<field name="name " type="string" indexed="true" stored="true" required="false" multiValued="false" />
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0" />
<fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
<uniqueKey>id</uniqueKey>
</schema>
我的数据框:
DataFrame df = sqlContext.sql("SELECT id, age, height, name FROM TABLE");
df.show() 给出:
+--------------------+-----------+------+------+
| id| age|height|name |
+--------------------+-----------+------+------+
|12345678912345678...| 10| 101|hello|
但是当我尝试使用 :
插入我的 solr 集合时
df.write()
.format("solr")
.option("collection", MY_COLLECTION)
.option("zkhost", MY_ZKHOST)
.save()
我有以下错误:
Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://MY_IP/solr/MY_COLLECTION_SHARD_REPLICA: ERROR :[doc=123456789123456789] unknown field '_indexed_at_tdt'
我不明白字段“_indexed_at_tdt”的来源。
DataFrame 似乎只有我想插入的 4 个字段是正确的,但由于这个未知字段“_indexed_at_tdt”,我仍然无法插入到我的 Solr 集合中。
更多信息:
我有一个 HBase 索引器,它插入到同一个集合中并且正在工作。
在此先感谢您的帮助!
如您所见,here 该字段似乎是由 Lucidworks 代码自动添加的。
您只需将对应的字段添加到架构中即可:
<field name="_indexed_at_tdt" type="tdate" indexed="true" stored="true" required="false" multiValued="false" />
或者,如果您喜欢为 *_tdt 设置动态。
我正在用 spark java 编写脚本。 我需要使用 Lucidworks - spark-solr 工具 (https://github.com/lucidworks/spark-solr)
将数据(从 DataFrame)插入到 Solr 集合中我的 schema.xml :
<schema name="MY_NAME" version="1.6">
<field name="_version_" type="long" indexed="true" stored="true" />
<field name="_root_" type="string" indexed="true" stored="false" />
<field name="ignored_id" type="ignored" />
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="age" type="int" indexed="true" stored="true" required="false" multiValued="false" />
<field name="height" type="tlong" indexed="true" stored="true" required="false" multiValued="false" />
<field name="name " type="string" indexed="true" stored="true" required="false" multiValued="false" />
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0" />
<fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
<uniqueKey>id</uniqueKey>
</schema>
我的数据框:
DataFrame df = sqlContext.sql("SELECT id, age, height, name FROM TABLE");
df.show() 给出:
+--------------------+-----------+------+------+
| id| age|height|name |
+--------------------+-----------+------+------+
|12345678912345678...| 10| 101|hello|
但是当我尝试使用 :
插入我的 solr 集合时df.write()
.format("solr")
.option("collection", MY_COLLECTION)
.option("zkhost", MY_ZKHOST)
.save()
我有以下错误:
Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://MY_IP/solr/MY_COLLECTION_SHARD_REPLICA: ERROR :[doc=123456789123456789] unknown field '_indexed_at_tdt'
我不明白字段“_indexed_at_tdt”的来源。
DataFrame 似乎只有我想插入的 4 个字段是正确的,但由于这个未知字段“_indexed_at_tdt”,我仍然无法插入到我的 Solr 集合中。
更多信息: 我有一个 HBase 索引器,它插入到同一个集合中并且正在工作。
在此先感谢您的帮助!
如您所见,here 该字段似乎是由 Lucidworks 代码自动添加的。
您只需将对应的字段添加到架构中即可:
<field name="_indexed_at_tdt" type="tdate" indexed="true" stored="true" required="false" multiValued="false" />
或者,如果您喜欢为 *_tdt 设置动态。