您可以在 Cassandra 中使用 solr_query 来查找包含某些特定值的地图字段吗?

Can you use solr_query in Cassandra to find map field containing some particular value?

我想使用 solr_query 查找地图类型字段包含给定键值对的结果。

我正在尝试创建与此类似的查询:

SELECT * FROM my_table WHERE pathId= 5 AND solr_query='validity: [1970-01-01T00:01:00 TO *] ’ AND metadata[1] = '2' LIMIT 1 ALLOW FILTERING;

SELECT * FROM my_table where metadata['1'] = '2' AND solr_query=$${ "q": "pathid:5", "fq": "validity:[1970-01-01T00:01:00 TO *]";

但是每次我都会收到 ServerError: java.lang.IllegalArgumentException: Search queries must have only one index expression. 错误。

我希望能够以某种方式查询 'where' 子句中的这 3 个条件 - pathid validitymetadata。 是否可以在 solr_query 中查询包含给定键值对的地图,或者是否有任何其他方法可以做到这一点?

我已经在以下字段上创建了搜索索引:

create SEARCH index on my_table with columns validity, pathId, metadata;

Cassandra 地图字段在 DSE 搜索中作为动态字段处理。为了使用这些,映射键遵循模式 <fieldname>_<key> 很重要。因此,在您的情况下,您必须插入格式为 metadata_key1metadata_key2 ...

的键

如果您遵循该命名约定,则可以按如下方式查询数据:

SELECT * FROM my_table where solr_query=$${ "q": "pathid:5 AND metadata_key1:2", "fq": "validity:[1970-01-01T00:01:00 TO *]";

记录了 DSE 搜索中动态字段的使用 here