使用 Solr 集成时 DSE 创建的 Cassandra 索引的性质是什么?
What is the nature of Cassandra indexes created by DSE when using Solr integration?
使用 DSE 软件将 Solr 与 Cassandra 集成时,为列族添加 Solr 核心会在 Solr 架构中索引的所有顶级字段上创建索引。使用概述的示例 CF 和 Solr 架构 here,生成了一堆索引:
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 索引,并且只是 "show up" 在 Cassandra 输出中,因为正在进行一些集成,或者它们实际上是 "full Cassandra indexes" (由于缺少更好的名称,但我说的是我可以使用 CREATE INDEX
CQL 语句创建的索引)。问题是如果它们是 Cassandra 索引,那么它们会产生性能问题,因为相应的数据可能具有高基数。
如果他们不是 "full Cassandra indexes",那么我想知道为什么他们在冻结字段上创建 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]
(当然,按照博客中使用冻结字段列表而不是冻结字段列表的示例,这当然可以正常工作)。
What I would like to understand is whether these indexes are just true Solr indexes, and just "show up" in Cassandra output because there is some integration that is going on, or they are actually "full Cassandra indexes"
DSE 搜索索引使用 Cassandra 的二级索引 API 在 Cassandra 写入路径和 Solr 文档更新机制之间提供桥梁。它们不是您在问题中提到的意义上的 "full Cassandra indexes",即使您在 table 描述中看到多个索引条目。这些条目中的每一个都代表相同 Solr 核心中的一个索引字段。
I'm wondering why there are their issues creating Solr cores over frozen fields.
您是否能够按照您提到的 blog post 完成,或者您是否也发现了您的错误?如果您可以无误地执行到最后,也许我们可以使用它作为基线来隔离您的问题。 (我假设您已经使用 dsetool create_core
和 generateResources=true
来创建有问题的核心。)
使用 DSE 软件将 Solr 与 Cassandra 集成时,为列族添加 Solr 核心会在 Solr 架构中索引的所有顶级字段上创建索引。使用概述的示例 CF 和 Solr 架构 here,生成了一堆索引:
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 索引,并且只是 "show up" 在 Cassandra 输出中,因为正在进行一些集成,或者它们实际上是 "full Cassandra indexes" (由于缺少更好的名称,但我说的是我可以使用 CREATE INDEX
CQL 语句创建的索引)。问题是如果它们是 Cassandra 索引,那么它们会产生性能问题,因为相应的数据可能具有高基数。
如果他们不是 "full Cassandra indexes",那么我想知道为什么他们在冻结字段上创建 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]
(当然,按照博客中使用冻结字段列表而不是冻结字段列表的示例,这当然可以正常工作)。
What I would like to understand is whether these indexes are just true Solr indexes, and just "show up" in Cassandra output because there is some integration that is going on, or they are actually "full Cassandra indexes"
DSE 搜索索引使用 Cassandra 的二级索引 API 在 Cassandra 写入路径和 Solr 文档更新机制之间提供桥梁。它们不是您在问题中提到的意义上的 "full Cassandra indexes",即使您在 table 描述中看到多个索引条目。这些条目中的每一个都代表相同 Solr 核心中的一个索引字段。
I'm wondering why there are their issues creating Solr cores over frozen fields.
您是否能够按照您提到的 blog post 完成,或者您是否也发现了您的错误?如果您可以无误地执行到最后,也许我们可以使用它作为基线来隔离您的问题。 (我假设您已经使用 dsetool create_core
和 generateResources=true
来创建有问题的核心。)