Elasticsearch日期范围过滤器不能使用gte,lte给出正确的结果

时间:2015-06-25 12:09:51

标签: nest elasticsearch elasticsearch-net

据观察,lte和gte都采用下限值。如何使它获取lte的上限和gte的下限?

这是我查询的外观

{
  "from": 0,
  "size": 40,
  "query": {
    "filtered": {
      "filter": {
    "bool": {
      "should": [
        {
          "range": {
            "CreatedOn": {
              "lte": "201505",
              "gte": "201404",
              "format": "yyyyMM"
            }
          }
        }
      ]
    }
      }
    }
  }
}

以上查询不会返回有效文件,例如" 2015-05-06T12:55:34.44"," 2015-05-26T14:42:24.963"它只返回" 2015-05-01T11:42:24.963"来自lte 201505

1 个答案:

答案 0 :(得分:0)

  • 201404表示2014年4月1日
  • 201505表示2015年5月1日

这就是你得到那个结果的原因。 Elasticsearch"翻译"在后台,您的查询范围为1396310400000 TO 1430524799999,意为01 Apr 2014 00:00:00 GMT TO 01 May 2015 23:59:59 GMT

如果您想要在2014年4月的整月和2015年5月的整个月之间进行所有操作,请使用以下内容:

          "range": {
            "createdOn": {
              "lte": "201506||-1d/d",
              "gte": "201404",
              "format": "yyyyMM"
            }
          }