执行日期范围查询时,弹性搜索未给出正确的结果

时间:2017-10-12 12:13:11

标签: elasticsearch range

我试图根据开始日期和结束日期之间的日期来过滤弹性搜索的结果。弹性搜索版本是1.7.6。

它给出了完全错误的结果。 我正在使用奇迹来查询索引。

架构是

"starting_on": {
            "type": "date",
            "format": "dateOptionalTime"
          }
My query is below:--

          GET XX/XX/_search
          {
             "_source": [
              "arrivals.starting_on",
                 "arrivals.ending_on"
                ],
              "query": {
              "filtered": {
             "filter": {
                "bool": {
          "must": [
            {
              "range": {

                "starting_on": {
                  "gte" :   "2017-10-14",
                  "format": "dateOptionalTime",


                },
                 "ending_on": {
                  "lte" :    "2017-10-17",
                  "format": "dateOptionalTime",

                }
              }

            }
          ]
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您的range查询错误,您不能在其中包含两个字段,而是需要进行两次range查询,如下所示:

GET XX/XX/_search
{
  "_source": [
    "arrivals.starting_on",
    "arrivals.ending_on"
  ],
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "arrivals.starting_on": {
                  "gte": "2017-10-14",
                  "format": "dateOptionalTime"
                }
              }
            },
            {
              "range": {
                "arrivals.ending_on": {
                  "lte": "2017-10-17",
                  "format": "dateOptionalTime"
                }
              }
            }
          ]
        }
      }
    }
  }
}