无法创建 Solr Core,密钥类型不匹配
Unable to create Solr Core, key type mismatch
运行 DataStax Enterprise Server 4.6.0 具有 6 个节点集群,新鲜,此 table 中只有 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&action=CREATE</str>
非常令人困惑的错误..."Solr key field tweet_id with type bigint" 与 "Cassandra key alias created with type timestamp" 有什么关系?
您的主键应与您的唯一键匹配。为什么不让 DSE 自动生成您的架构 xml。
运行 DataStax Enterprise Server 4.6.0 具有 6 个节点集群,新鲜,此 table 中只有 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&action=CREATE</str>
非常令人困惑的错误..."Solr key field tweet_id with type bigint" 与 "Cassandra key alias created with type timestamp" 有什么关系?
您的主键应与您的唯一键匹配。为什么不让 DSE 自动生成您的架构 xml。