我想使用solr\u查询来查找Map类型的哪个字段包含给定的键值对。
我正在尝试创建一个类似于以下内容的查询:
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
. 是否可以查询包含给定键值对的Map solr_query
,或者还有其他方法吗?
我已在以下字段上创建了搜索索引:
create SEARCH index on my_table with columns validity, pathId, metadata;
1条答案
按热度按时间t9eec4r01#
在dse搜索中,cassandraMap字段作为动态字段处理。为了使用这些关键点,重要的是Map关键点遵循的模式
<fieldname>_<key>
. 因此,在您的情况下,您必须在表单中插入键metadata_key1
,metadata_key2
...如果遵循该命名约定,则可以按如下方式查询数据:
动态字段在dse搜索中的使用记录在这里。