我想在cassandra中过滤下表的行。
CREATE TABLE mids_test_db.defect_data (
wafer_id text,
defect_id text,
document_id text,
fields list<double>,
PRIMARY KEY (wafer_id, defect_id)
)
...
CREATE INDEX defect_data_fields_idx ON mids_test_db.defect_data (values(fields));
我第一次尝试的是 field[0] > 0.5
但失败了。
cqlsh:mids_test_db> select fields from defect_data where wafer_id = 'MIDS_1_20170101_023000_30000_1548100671' and fields[0] > 0.5;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Indexes on list entries (fields[index] = value) are not currently supported."
在谷歌搜索了一段时间后,我觉得这种工作在Cassandra不容易完成。数据模型类似于字段值集合。我主要想问 defect
使用its的数据 fields
上面的数据对我的生意很重要。
我应该考虑什么方法?。应用程序端过滤?任何提示或建议将不胜感激。
1条答案
按热度按时间cyvaqqii1#
不可能直接使用cassandra,但您有以下选择:
如果您的cassandra是datasax企业,那么您可以使用dse搜索;
可以添加其他表以执行查找:
(…忽略此行…)
之后,您应该能够在分区内执行范围扫描,并且至少获取
defect_id
字段,并通过第二个查询获取所有字段值。根据您的cassandra版本,您可以使用物化视图为您维护查找表。