在cql shell上使用solr_query进行范围搜索

时间:2016-02-03 16:31:06

标签: solr cassandra cql solr4 cql3

我们正尝试使用solr查询从cassandra-solr节点提取日期范围的数据。

e.g.

SELECT *  FROM keyspace_name.table_name where solr_query='{"q":"<col1>:*",,"sort":"col1 asc"}';
            I could find syntax for apache solr documentation to perform range search & examples too.

如果是Datastax Solr,则无法使用多个条件/日期过滤器的DSE搜索语法

https://docs.datastax.com/en/datastax_enterprise/4.6/datastax_enterprise/srch/srchCql.html

我找不到Datastax Solr的任何文档,专门用于跟踪。

  1. 1)具有多个参数的“fq”2)日期范围的语法     3)日期格式&amp;使用solr_query
  2. 指定它们的语法

    如果我可以参考除Datastax Solr文档之外的任何来源,请告知我们语法和&amp;使用参数

    触发查询的示例

    查找两个日期之间的数据。

      

    等效的cql查询:

    select * from tableName where startdate >= '1987-19-09 11:14:00+0000' AND  startdate < '2003-10-06 08:42:00+0000' limit 500 allow filtering;
    

    请帮忙。  谢谢 SAURABH

2 个答案:

答案 0 :(得分:0)

对于具有多个参数的fq,官方文档提到:

"fq": <filter query expression(s) (string or array of strings)>,

从DSE 4.6.10开始,您可以执行以下操作:

"fq":["a:foo", "b:bar", "c:baz"]

如果您正在使用日期,我建议您查看https://cwiki.apache.org/confluence/display/solr/Working+with+Dates。 (请记住,使用DSE Search JSON查询格式,您可能必须在转发Solr特殊字符之前进行一些JSON转义,以获得所需的结果。)

答案 1 :(得分:0)

在Solr中,您需要使用\来转义特殊字符。特殊字符包括+, - ,&amp;&amp;,||,!,(,),“,〜,* ,?和:。

所以你的cql查询应该是:

从tableName中选择*其中solr_query ='{“q”:“*:*”,“fq”:{startdate:[1987-19-09T11 \\:14 \\:00 \\ + 0000 TO 2003- 10-06T08 \\:42 \\:00 \\ + 0000],“sort”:“startdate desc”}限制500;