我具有以下数据库结构:
CREATE TYPE udt_category_subcategory
{
category map<text, uuid>,
subcategory map<text, uuid>
}
CREATE TABLE fenix
{
id uuid,
category frozen<udt_category_subcategory>
}
CREATE SEARCH INDEX ON fenix WITH COLUMNS category;
我需要使用Category
在Fenix
表的Solr
字段中执行搜索,在该字段中,我保存了以下数据结构:
{
"category" : {
"Category Name 1" : "d8f00199-7103-476f-9527-f7d4c92d55f5"
},
"subcategory" : {
"Subcategory Name 1" : "06cd6a42-4c50-46ed-a97a-1854c50a7e6f"
}
}
我正在尝试以下说明:
SELECT * FROM fenix WHERE solr_query = '{!tuple}category.subcategory:06cd6a42-4c50-46ed-a97a-1854c50a7e6f'
很明显,该过滤器当前无法使用,但是出了什么问题呢?我需要输入map <text, uuid>
列的“键”字段才能工作吗?这是可能的?这种数据结构对这种类型的搜索有意义吗?
欢迎任何帮助! :)
答案 0 :(得分:1)
用于保存动态字段:
https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/search_index/addMapField.html
因此,您需要像查询动态字段一样对其进行查询:
SELECT * FROM fenix WHERE solr_query = '{!tuple}category.subcategory_Name_1:06cd6a42-4c50-46ed-a97a-1854c50a7e6f'
请注意,我已从地图键中删除了空格,并使地图键与dyn字段前缀的地图字段名称匹配。如果您在DSE搜索中了解dyn字段,那么您会理解的。
TL; DR:查询为{!tuple}udt.dynamicfield:value