您可以使用cassandra中的solr\u查询来查找包含特定值的Map字段吗?

vq8itlhq  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(242)

我想使用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;
piwo6bdm

piwo6bdm1#

在dse搜索中,cassandraMap字段作为动态字段处理。为了使用这些关键点,重要的是Map关键点遵循的模式 <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搜索中的使用记录在这里。

相关问题