【发布时间】:2016-05-20 02:04:51
【问题描述】:
使用 DSE 软件将 Solr 与 Cassandra 集成时,为列族添加 Solr 核心会在 Solr 架构中索引的所有顶级字段上创建索引。使用here 概述的示例 CF 和 Solr 架构,生成了一堆索引:
cassandra@cqlsh:demo1> desc demo;
CREATE TABLE demo1.demo (
id text PRIMARY KEY,
friends list<frozen<name>>,
magic_numbers frozen<tuple<int, int, int>>,
name frozen<name>,
solr_query text,
status text
[skipped]
CREATE CUSTOM INDEX demo1_demo_friends_index ON demo1.demo (friends) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
CREATE CUSTOM INDEX demo1_demo_magic_numbers_index ON demo1.demo (magic_numbers) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
CREATE CUSTOM INDEX demo1_demo_name_index ON demo1.demo (name) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
CREATE CUSTOM INDEX demo1_demo_solr_query_index ON demo1.demo (solr_query) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
CREATE CUSTOM INDEX demo1_demo_status_index ON demo1.demo (status) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
我想了解的是这些索引是否只是真正的 Solr 索引,只是因为正在进行一些集成而“显示”在 Cassandra 输出中,或者它们实际上是“完整的 Cassandra 索引”(对于没有更好的名称,但我说的是可以使用CREATE INDEX CQL 语句创建的索引)。问题是如果它们是 Cassandra 索引,那么它们会产生性能问题,因为相应的数据可能具有高基数。
如果它们不是“完整的 Cassandra 索引”,那么我想知道为什么在冻结字段上创建 Solr 核心会出现问题。 IE。如果我创建一个列族:
cassandra@cqlsh:demo1> CREATE TABLE demo2 (
"id" VARCHAR PRIMARY KEY,
"name" frozen<Name>,
"friends" frozen<list<Name>> );
Solr 核心创建(dsetool create_core 和 generateResources=true)失败:
WARN [demo1.demo2 Index WorkPool scheduler thread-0] 2016-02-09 13:57:14,781 WorkPool.java:672 - Listener com.datastax.bdp.search.solr.AbstractSolrSecondaryIndex$SSIIndexPoolListener@69442bb
6 failed for pool demo1.demo2 Index with exception: SolrCore 'demo1.demo2' is not available due to init failure: org.apache.cassandra.exceptions.InvalidRequestException: Frozen collections cur
rently only support full-collection indexes. For example, 'CREATE INDEX ON <table>(full(<columnName>))'.
org.apache.solr.common.SolrException: SolrCore 'demo1.demo2' is not available due to init failure: org.apache.cassandra.exceptions.InvalidRequestException: Frozen collections currently only su
pport full-collection indexes. For example, 'CREATE INDEX ON <table>(full(<columnName>))'.
at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:742) ~[solr-uber-with-auth_2.0-4.10.3.1.287.jar:4.10.3.1.287]
at com.datastax.bdp.search.solr.core.CassandraCoreContainer.getCore(CassandraCoreContainer.java:171) ~[dse-search-4.8.4.jar:4.8.4]
at com.datastax.bdp.search.solr.AbstractSolrSecondaryIndex.getCore(AbstractSolrSecondaryIndex.java:546) ~[dse-search-4.8.4.jar:4.8.4]
at com.datastax.bdp.search.solr.AbstractSolrSecondaryIndex$SSIIndexPoolListener.onBackPressure(AbstractSolrSecondaryIndex.java:1467) ~[dse-search-4.8.4.jar:4.8.4]
(当然,按照博客中使用冻结字段列表而不是冻结字段列表的示例,这可以正常工作)。
【问题讨论】:
标签: cassandra datastax datastax-enterprise