【问题标题】:Text based selection of records using CQL使用 CQL 的基于文本的记录选择
【发布时间】:2016-03-21 08:32:41
【问题描述】:

我的 Cassandra 表中有一个类似“地址”的文本字段。我想根据“地址”字段中的一些文本(如城市或街道名称)搜索记录。

例如:我的地址类似于 'House No. 18, Shehzad Colony, M.D.A. Chowk 拉合尔'。在这里,我想搜索具有字符串'M.D.A.的一部分的记录。 Chowk Lahore' 在地址字段中。

如何使用 CQL shell 做到这一点。谁能指导我...

谢谢...

【问题讨论】:

    标签: cassandra cql


    【解决方案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 很有用。但是您仍然希望创建一个专门设计的表,以便按您需要的任何列提供查询。

    注意:您可以尝试一张表并在其中一列上创建二级索引,但二级索引在规模上表现不佳,所以我不建议这样做。

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 2020-12-06
      • 1970-01-01
      • 2010-11-28
      • 2012-09-13
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      相关资源
      最近更新 更多