我正在使用Solr数据集。我在想是否有一种方法可以查询(日期查询),使其相对于每个记录日期字段
进一步解释。
每个记录都有一个date
字段,我需要的是日期已经超过30分钟窗口的所有记录的列表。
只是如何操作
我具有形式的JSON结构,并且已在created_at
上应用索引
{id: 1, created_at: "2018-06-28T:00:00:00Z"}
{id: 2, created_at: "2018-06-28T:00:01:00Z"}
{id: 3, created_at: "2018-06-28T:00:02:00Z"}
{id: 4, created_at: "2018-06-28T:00:10:00Z"}
比方说,如果我在00:33
查询,我将返回3条记录。
{id: 1, created_at: "2018-06-28T:00:00:00Z"}
{id: 2, created_at: "2018-06-28T:00:01:00Z"}
{id: 3, created_at: "2018-06-28T:00:02:00Z"}
如果我在00:41
查询,它应该返回4条记录。
{id: 1, created_at: "2018-06-28T:00:00:00Z"}
{id: 2, created_at: "2018-06-28T:00:01:00Z"}
{id: 3, created_at: "2018-06-28T:00:02:00Z"}
{id: 4, created_at: "2018-06-28T:00:10:00Z"}
进一步解释这一点。如果我必须在PostgreSQL中做同样的事情,我可以尝试一下。
select * from [table] where now() - created_at > interval '30 minute'
答案 0 :(得分:0)
Solr支持using Date Math in queries。
要检索<VirtualHost *:80>
DocumentRoot "C:/Bitnami/wamp/apache2/htdocs/myapp/public"
ServerName siteagent.test
<Directory "C:/Bitnami/wamp/apache2/htdocs/myapp/public">
Options Indexes FollowSymLinks
AllowOverride all
Require local
</Directory>
</VirtualHost>
至少在30分钟前的内容,可以使用:
created_at
这将返回至少30分钟前创建的任何内容。使用created_at:[* TO NOW-30MINUTES]
意味着查询将不会被缓存(因为NOW的值在每个请求之间都会改变),因此,如果此查询每秒运行多次,则可以在Solr看到之前在控制器中预生成这些值值,也可以使用查询参数NOW
在所有请求中设置一个公共值。另一种选择是使用NOW / MINUTE将值四舍五入到当前分钟的开始。
要获取过去的所有内容(这是您先前的查询示例所指示的内容,但postgresql查询没有):
NOW=<unix timestamp>