Java版本:
openjdk version "20" 2023-03-21
OpenJDK Runtime Environment (build 20+37)
OpenJDK 64-Bit Server VM (build 20+37, mixed mode, sharing)
Springboot版本:3.0.1
Cassandra版本:
cqlsh:hipi> SHOW version;
[cqlsh 6.0.0 | Cassandra 4.0.7 | CQL spec 3.4.5 | Native protocol v5]
表格说明
cqlsh:abc> DESCRIBE TABLE books;
CREATE TABLE abc.books (
author_id text,
name text,
created_at timestamp,
status boolean,
PRIMARY KEY (author_id, name)
) WITH CLUSTERING ORDER BY (name ASC)
AND additional_write_policy = '99p'
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND cdc = false
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND default_time_to_live = 0
AND extensions = {}
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair = 'BLOCKING'
AND speculative_retry = '99p';
CREATE INDEX books_name_idx ON abc.books (name);
使用WHEN =查询时
SELECT * FROM books WHERE name='8b481c6e-48a0-4552-a624-9e8fbad4f930';
结果
cqlsh:hipi> SELECT * FROM books WHERE name ='8b481c6e-48a0-4552-a624-9e8fbad4f930';
author_id | name | created_at | status
--------------------------------------+--------------------------------------+---------------------------------+--------
a1c08312-d8fe-46f8-b625-bf43da2a2920 | 8b481c6e-48a0-4552-a624-9e8fbad4f930 | 2023-06-13 09:36:07.311000+0000 | True
但是在使用LIKE时
SELECT * FROM books WHERE name LIKE '%8b4%';
结果
- InvalidRequest:来自服务器的错误:code = 2200 [Invalid query] message ="LIKE限制仅在正确索引的列上受支持。名称LIKE '%8b4%'无效。"*
1条答案
按热度按时间vwhgwdsa1#
要在CQL中使用
LIKE
过滤,需要将索引构建为SSTable Attached Secondary Index(SASI)。SASI索引被认为是“实验性的”,因此默认情况下是禁用的。要启用它们,请在cassandra.yaml
中为所有节点翻转此设置,然后重新启动群集:接下来,创建索引,如下所示:
然后,这应该工作: