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

Mar*_*eba 6 solr cassandra solr-query-syntax datastax-enterprise

我想使用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;
Run Code Online (Sandbox Code Playgroud)

要么

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

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

我希望能够以某种方式在'where'子句- pathid validity和中查询这3个条件metadata。是否可以查询在内部包含给定键值对的映射solr_query,或者还有其他方法可以做到这一点?

我在字段上创建了搜索索引:

create SEARCH index on my_table with columns validity, pathId, metadata;
Run Code Online (Sandbox Code Playgroud)

mik*_*kea 2

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 *]";
Run Code Online (Sandbox Code Playgroud)

此处记录了 DSE 搜索中动态字段的使用。