您可以在 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
validity
和 metadata
。
是否可以在 solr_query
中查询包含给定键值对的地图,或者是否有任何其他方法可以做到这一点?
我已经在以下字段上创建了搜索索引:
create SEARCH index on my_table with columns validity, pathId, metadata;
Cassandra 地图字段在 DSE 搜索中作为动态字段处理。为了使用这些,映射键遵循模式 <fieldname>_<key>
很重要。因此,在您的情况下,您必须插入格式为 metadata_key1
、metadata_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。
我想使用 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
validity
和 metadata
。
是否可以在 solr_query
中查询包含给定键值对的地图,或者是否有任何其他方法可以做到这一点?
我已经在以下字段上创建了搜索索引:
create SEARCH index on my_table with columns validity, pathId, metadata;
Cassandra 地图字段在 DSE 搜索中作为动态字段处理。为了使用这些,映射键遵循模式 <fieldname>_<key>
很重要。因此,在您的情况下,您必须插入格式为 metadata_key1
、metadata_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。