使用CQL基于文本的记录选择

时间:2015-12-15 13:59:01

标签: cassandra cql

我有一个类似于'地址'的文字字段。在我的Cassandra表中。我想根据地址'中的某些文字搜索记录。像城市或街道名称的字段。

例如:我的地址如同#18; House No. 18,Shehzad Colony,M.D.A。 Chowk Lahore'。在这里,我想搜索具有字符串& C.D.A的一部分的记录。 Chowk Lahore'在地址字段中。

如何使用CQL shell执行此操作。任何人都可以指导我......

感谢...

1 个答案:

答案 0 :(得分:1)

真的没有办法开箱即用。在Cassandra中,您需要设计表以适合您的查询模式。因此,如果按城市(或其他)搜索地址是您需要支持的模式,那么有几种方法可以做到这一点。

您可以创建新的查询表,并按city分区:

CREATE TABLE userAddressesByCity (
    userID uuid,
    firstName text,
    lastName text,
    street text,
    city text,
    province text,
    postalCode text,
    PRIMARY KEY (city,userID));

此表结构支持city作为分区键进行查询,并且还有userID作为群集密钥以确保唯一性。

如果您正在使用地址,一种有用的技巧是创建User Defined Type(UDT)。如果要将用户的地址存储在单个列中,UDT非常有用。但您仍然希望创建一个专门设计的表,以便根据您需要的任何列提供查询。

注意:您可以尝试一个表并在其中一个列上创建二级索引,但二级索引的规模很差,因此我不建议这样做。