我在我的Cassandra表中有一個像'address'這樣的文本字段。我想根據「地址」字段中的某些文本(如城市或街道名稱)搜索記錄。基於文本的使用CQL的記錄選擇
例如:我的地址是'House No. 18,Shehzad Colony,M.D.A. Chowk Lahore'。在這裏,我想搜索具有字符串'M.D.A.'的一部分的記錄。 Chowk Lahore'在地址欄中。
我該如何使用CQL shell來做到這一點。任何人都可以指導我...
感謝...
我在我的Cassandra表中有一個像'address'這樣的文本字段。我想根據「地址」字段中的某些文本(如城市或街道名稱)搜索記錄。基於文本的使用CQL的記錄選擇
例如:我的地址是'House No. 18,Shehzad Colony,M.D.A. Chowk Lahore'。在這裏,我想搜索具有字符串'M.D.A.'的一部分的記錄。 Chowk Lahore'在地址欄中。
我該如何使用CQL shell來做到這一點。任何人都可以指導我...
感謝...
真的是沒有辦法做到這一點的最箱。在卡桑德拉,你需要設計你的表來適應你的查詢模式。因此,如果按城市(或其他)搜索地址是您需要支持的模式,那麼有幾種方法可以執行此操作。
您可以通過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很有用。但是您仍然希望創建專門設計的表格,以便根據您需要的列提供查詢。
注:可以嘗試一個表,並在其中一列創建一個輔助指標,但二級指標在規模表現不佳,所以我不建議。