【问题标题】:Elasticsearch date range filter does not give proper results with gte, lteElasticsearch 日期范围过滤器无法使用 gte、lte 给出正确的结果
【发布时间】:2015-06-25 12:09:51
【问题描述】:

据观察,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

【问题讨论】:

    标签: nest elasticsearch elasticsearch-net


    【解决方案1】:
    • 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"
                }
              }
    

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多