DSE solr查询无法使用CQL

时间:2016-12-01 07:45:53

标签: datastax-enterprise

我是DSE / Solr的新手,我正在尝试使用Field Transformer索引Cassandra表中的常规/ json字段。两个输入/输出变压器工作者都很好,我能够使用Solr管理UI进行搜索/过滤。但是当我尝试从CQL执行相同的操作时,它会失败并出现以下错误。我使用的是DSE 5.0.3

  

ServerError:创建字段时出错   ' {_uniqueKey类型= cql3CompositeKey_str,属性=索引,存储,omitNorms,omitTermFreqAndPositions,docValues,   需要=真}'来自价值' null'

     

查询:从custshard_ne_interface中选择party_id   solr_query =' {" Q":" "" FQ":"的businessKey:10.10。 2.15,NA,NA,NA,3"}&#39 ;;

Schema.xml的:



<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="autoSolrSchema" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.TrieLongField" name="TrieLongField"/>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType class="org.apache.solr.schema.UUIDField" name="UUIDField"/>
</types>
<fields>
<field indexed="true" multiValued="false" name="party_id" stored="true" required="true" type="StrField" omitNorms="true" omitTermFreqAndPositions="true" docValues="true"/>
<field indexed="true" multiValued="false" name="sh_coll_uuid" stored="true" required="true" type="UUIDField" omitNorms="true" omitTermFreqAndPositions="true" docValues="true"/>
<field indexed="true" multiValued="false" name="ne_id" stored="true" required="true" type="StrField" omitNorms="true" omitTermFreqAndPositions="true" docValues="true"/>
<field indexed="true" multiValued="false" name="businesskey" stored="true" required="true" type="StrField" omitNorms="true" omitTermFreqAndPositions="true" docValues="true"/>
<field indexed="true" multiValued="false" name="clctor_id" stored="true" type="StrField"/>
<field indexed="true" multiValued="false" name="ifc_json" stored="true" type="StrField"/>
<field indexed="true" multiValued="false" name="neIpAddress" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="neHostName" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="ifcName" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="ifcType" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="ipAddress" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="macAddress" stored="false" type="StrField"/>
<field indexed="true" multiValued="false" name="ipMask" stored="false" type="StrField"/>
</fields>
<uniqueKey>(party_id,sh_coll_uuid,ne_id,businesskey)</uniqueKey>
</schema>
&#13;
&#13;
&#13;

提前致谢

2 个答案:

答案 0 :(得分:0)

最后通过添加自动生成的字段_uniqueKey作为FieldOutputTransformer的一部分来实现它,它将复合键值作为字符串数组

答案 1 :(得分:0)

抱歉有点晚了 - 但我实际上建议不要使用变压器并在UDT本地使用它。请参阅随附的博客文章 - 它更容易。 https://www.datastax.com/dev/blog/json-and-dse-search