【问题标题】:Unable to create Solr Core, key type mismatch无法创建 Solr Core,密钥类型不匹配
【发布时间】:2015-04-02 01:39:42
【问题描述】:

使用 6 节点集群运行 DataStax Enterprise Server 4.6.0,新鲜,此表内只有 1 条记录:

CREATE TABLE tweets.tweets (uid bigint, tweet_id bigint, 
tweet text,created timestamp,PRIMARY KEY (uid , created) ) 
WITH CLUSTERING ORDER BY (created DESC);

schema.xml 看起来像这样:

    <?xml version="1.0" encoding="UTF-8" ?>    
<schema name="tweets" version="1.1">
 <types>
  <fieldType name="bigint" class="solr.TrieLongField"/>
  <fieldType name="timestamp" class="solr.TrieDateField"/>
  <fieldType name="text" class="solr.TextField">
    <analyzer><tokenizer class="solr.StandardTokenizerFactory"/></analyzer>
  </fieldType>
 </types>

 <fields>
    <field name="uid"  type="bigint" indexed="true"  stored="true"/>
    <field name="tweet_id"  type="bigint" indexed="true"  stored="true"/>
    <field name="tweet"  type="text" indexed="true"  stored="false"/>
    <field name="created"  type="timestamp" indexed="true"  stored="false"/>
 </fields>
<defaultSearchField>tweet</defaultSearchField>
<uniqueKey>(uid,tweet_id)</uniqueKey>

</schema>

每当我跑步时:

curl "http://localhost:8983/solr/admin/cores?action=CREATE&name=tweets.tweets"

我明白了:

... java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Mismatch between Solr key field tweet_id with type bigint{class=org.apache.solr.schema.TrieLongField,analyzer=org.apache.solr.schema.FieldType$DefaultAnalyzer,args={class=solr.TrieLongField}} and Cassandra key alias created with type timestamp
        at com.datastax.bdp.search.solr.core.Cql3CassandraSolrSchemaUpdater.validateUniqueKeyStructure(Cql3CassandraSolrSchemaUpdater.java:234)
        at com.datastax.bdp.search.solr.core.Cql3CassandraSolrSchemaUpdater.update(Cql3CassandraSolrSchemaUpdater.java:46)
        at com.datastax.bdp.search.solr.core.CassandraCoreContainer.create(CassandraCoreContainer.java:275)
        ... 31 more
</str><int name="code">500</int></lst><str name="params">name=tweets.tweets&amp;action=CREATE</str>

非常令人困惑的错误......“Solr key field tweet_id with type bigint”与“Cassandra key alias created with type timestamp”有什么关系?

【问题讨论】:

    标签: solr cassandra-2.0 datastax


    【解决方案1】:

    您的主键应与您的唯一键匹配。为什么不让 DSE 自动生成您的架构 xml。

    【讨论】:

    • 我知道这对我来说很愚蠢 - 谢谢!顺便说一句,我尝试了 auto gen: curl "localhost:8983/solr/admin/…" 并得到了一个错误:自动 Solr 模式不支持 Type org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimestampType)一代。
    • 啊,让我检查一下,可能是一个已知问题
    • 是的,这是一个已知问题,将在 DSE 4.6.1 中修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2022-08-23
    • 2018-08-19
    • 2019-06-11
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多