问题描述
我有一个名为place_ratings
的表,其中包含列标题rating_id
,place_id
,place_name
,place_rating
和cuisines
。 / p>
place_id
是一个整数,place_rating
也是如此。
place_name
是文本类型。
cuisines
是一组文本类型的集合。
表中一行的样本数据如下:
rating_id
= 5
place_id
= 658
place_name
='Bobbys Burgers'
place_rating
= 10
cuisines
= {'汉堡','薯片','奶昔'
这是我的代码:
SELECT place_id,place_name,place_rating FROM place_ratings WHERE cuisines = { 'Pizzeria' };
但是,我收到以下错误消息:
InvalidRequest: Error from server: code=2200 [Invalid query] message="Collection column 'cuisines' (set<text>) cannot be restricted by a '=' relation"
谢谢!
解决方法
您可以为该列创建二级索引,然后使用该索引进行搜索(请参见documentation for more information):
CREATE INDEX cousine_idx ON place_ratings ( cuisines );
SELECT * FROM place_ratings WHERE cuisines CONTAINS 'Pizzeria';
但是通常这样的查询不适用于Cassandra,因为它们需要扫描所有节点上的数据以查找包含数据的实际行-因为您没有提供分区键。尽管如果您要对分区键添加限制(例如,在特定城市中搜索比萨店),则效果会更好。