elasticsearch,lucene,search-engine,Solr,elasticsearch,Lucene,Search Engine" /> elasticsearch,lucene,search-engine,Solr,elasticsearch,Lucene,Search Engine" />

Solr 使用两个日期字段的Elasticsearch daterange

Solr 使用两个日期字段的Elasticsearch daterange,solr,elasticsearch,lucene,search-engine,Solr,elasticsearch,Lucene,Search Engine,我从客户端发送一个查询,查询currentDate位于附加到所有文档的两个值之间的文档。这些文档有一个expireDate和一个availableDate 我如何表述这个查询?作为猜测,我得出了以下不可行的结论: { "constant_score": { "filter": { "range" : { "expiredate" : { "lte": "2015-08-15T11:28:45.114-07:00" },

我从客户端发送一个查询,查询
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范围在复合对象或单面范围数组上不起作用。我想我可以为每个字段添加一个新的过滤器。有没有一种方法可以将一个日期范围用于两个字段?

表达该查询的正确方法是使用两个
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"
                }
              }
            }
          ]
        }
      }
    }
  }
}