我从客户端发送一个查询文档,其中currentDate
介于所有文档附加的两个值之间。文档包含expireDate
和availableDate
。
如何制定此查询?作为一个猜测我想出了以下,这是行不通的:
{
"constant_score": {
"filter": {
"range" : {
"expiredate" : {
"lte": "2015-08-15T11:28:45.114-07:00"
},
"availabledate" : {
"gte": "2015-08-11T11:28:45.114-07:00"
}
}
}
}
}
这甚至看起来不对,因为afaik范围不适用于复合对象或单侧范围的数组。我想我可以为每个字段添加一个全新的过滤器。有没有办法为两个字段使用一个日期范围?
答案 0 :(得分:1)
表达该查询的正确方法是使用两个range
过滤器(每个日期字段一个)并将它们放在另一个bool/must
过滤器中。
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"range": {
"expireDate": {
"lte": "2015-08-15T11:28:45.114-07:00"
}
}
},
{
"range": {
"availabledate": {
"gte": "2015-08-11T11:28:45.114-07:00"
}
}
}
]
}
}
}
}
}