我有一个包含多个不同类型字段的集合,当我运行SQL查询时,只能使用字符串类型字段。如果我尝试选择 int / long / float / double 字段,我会得到一个与此类似的异常。
"result-set":{
"docs":[{
"EXCEPTION":"java.lang.Long cannot be cast to java.lang.String",
"EOF":true,
"RESPONSE_TIME":276}]}}
有什么方法可以解决这个问题吗?
我正在使用 Solr 6.6 。字段类型定义如下。
<fieldType name="StrField" class="org.apache.solr.schema.StrField"/>
<fieldType name="TextField" class="org.apache.solr.schema.TextField">
<fieldType name="TrieDoubleField" class="org.apache.solr.schema.TrieDoubleField"/>
<fieldType name="TrieFloatField" class="org.apache.solr.schema.TrieFloatField"/>
<fieldType name="TrieIntField" class="org.apache.solr.schema.TrieIntField"/>
<fieldType name="TrieLongField" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
所有带有列表的SQL查询都可以使用StrField和TextField。
我已尝试使用 Solrj 驱动程序,并为上面定义的所有数字类型提供相同的运气。字符串/文本工作正常。
Exception in thread "main" java.sql.SQLException: java.sql.SQLException: java.io.IOException: --> http://xx.xx.xx.xx:7574/solr/collection_test_shard2_replica2/:java.lang.Long cannot be cast to java.lang.String
at org.apache.solr.client.solrj.io.sql.StatementImpl.executeQueryImpl(StatementImpl.java:74)
at org.apache.solr.client.solrj.io.sql.StatementImpl.executeQuery(StatementImpl.java:111)
at tng.Sql.run(Sql.java:40)
at tng.MainSolrCloud.main(MainSolrCloud.java:52)
Caused by: java.sql.SQLException: java.io.IOException: --> http://xx.xx.xx.xx:7574/solr/collection_test_shard2_replica2/:java.lang.Long cannot be cast to java.lang.String
at org.apache.solr.client.solrj.io.sql.ResultSetImpl.<init>(ResultSetImpl.java:83)
at org.apache.solr.client.solrj.io.sql.StatementImpl.executeQueryImpl(StatementImpl.java:71)
... 3 more
Caused by: java.io.IOException: --> http://x.xx.x.xx:7574/solr/collection_test_shard2_replica2/:java.lang.Long cannot be cast to java.lang.String
at org.apache.solr.client.solrj.io.stream.SolrStream.read(SolrStream.java:233)
at org.apache.solr.client.solrj.io.stream.PushBackStream.read(PushBackStream.java:87)
at org.apache.solr.client.solrj.io.sql.ResultSetImpl.<init>(ResultSetImpl.java:80)
... 4 more