0

观察到 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

4

1 回答 1

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"
            }
          }
于 2015-06-25T12:45:38.740 回答