cassandra:基于集合中的值进行查询时出错

omqzjyyz  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(448)

我有张table叫 place_ratings 带列标题 rating_id , place_id , place_name , place_rating ,和 cuisines .
主键是 rating_id 它是一个整数。 place_id 是一个整数 place_rating . place_name 是文本类型。 cuisines 是一组类型文本。
表中一行的示例数据如下: rating_id = 5 place_id = 658 place_name ='博比汉堡' place_rating = 10 cuisines ={'汉堡','薯条','奶昔'}
我正在尝试编写一个查询,以返回烹饪仅为“pizzeria”的所有行。
这是我的密码: 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" 为了让查询正确运行,我需要对代码进行哪些更改?
谢谢!

m1m5dgzv

m1m5dgzv1#

可以为该列创建辅助索引,然后使用此索引进行搜索(有关详细信息,请参阅文档):

CREATE INDEX cousine_idx ON place_ratings ( cuisines );
SELECT * FROM place_ratings WHERE cuisines CONTAINS 'Pizzeria';

但是通常这样的查询并不适合cassandra,因为它们需要扫描所有节点上的数据以找到包含数据的实际行,因为您没有提供分区键。虽然如果您在分区键上添加了一个限制,例如,在特定城市搜索比萨店,那么效果会更好。

相关问题