不能限制聚类列“状态”(前面的列“日期时间”受非 EQ 关系限制
Posted
技术标签:
【中文标题】不能限制聚类列“状态”(前面的列“日期时间”受非 EQ 关系限制【英文标题】:Clustering column "status" cannot be restricted (preceding column "datetime" is restricted by a non-EQ relation 【发布时间】:2018-08-23 10:15:15 【问题描述】:我的日期时间列仅用于排序目的,其余的聚类键用于过滤。但是如果不给日期时间赋予等效值,我就无法按其他列进行过滤。如果我使用 Apache solr,我可以解决我的问题吗?
我的桌子:
create table search_by_company_id_status
(
agency_id text,
datetime timestamp,
createid text,
status text,
primary key ((agency_id),datetime,status,createid)) with clustering order by (datetime desc);
我正在尝试的查询:
select * from search_by_agency_id_status where agency_id='125' and datetime>'2018-02-02 12:00:00.000' and recordstatus='7' and createid='id234';
【问题讨论】:
【参考方案1】:根据您提供的查询,您将使用“等于”谓词对其余聚类列(即“status”和“createdid”)进行过滤。
您可以按如下方式重新设计表格,以保证日期时间的排序顺序(因为每个先前的值都被过滤为单个值)。
create table search_by_company_id_status
(
agency_id text,
datetime timestamp,
createid text,
status text,
primary key ((agency_id),status,createid,datetime)) with clustering order by (datetime desc);
这个查询应该可以正常工作
select * from search_by_agency_id_status where agency_id='125' and status='7' and createid='id234' and datetime>'2018-02-02 12:00:00.000';
【讨论】:
我没有遵循这一点,因为我并不总是按状态和 createid 过滤,这两列只是可选的猜测我将不得不再创建 2 个表来满足过滤。感谢您的回答。以上是关于不能限制聚类列“状态”(前面的列“日期时间”受非 EQ 关系限制的主要内容,如果未能解决你的问题,请参考以下文章
使用 IF NOT EXISTS 使用主键和聚类列进行唯一插入