elasticsearch是否支持这种查询?

时间:2017-09-05 14:37:40

标签: elasticsearch

我正在使用以下术语的查询。 它检查日期是否在范围

之间
{
  "bool": {
    "must": [
      {
        "range": {
          "start_date": {
            "lt": "2017-09-13"
          }
        }
      },
      {
        "range": {
          "end_date": {
            "gt": "2017-09-13"
          }
        }
      }
    ]
  }
}

有没有办法在一个range中实现此目的,而不是使用两个不同的range术语和must。 例如像这样的东西

{
  "range": {
    "2017-09-13": {
      "gt": "start_date",
      "lt": "end_date"
    }
  }
}

还是有其他方法可以做到这一点

1 个答案:

答案 0 :(得分:1)

由于您要在两个不同的字段上添加约束,因此需要两个range个查询。

如果你真的想要一个没有bool/must的单个查询,你最终可以使用query_string查询,条件如下:

{
  "query": {
    "query_string": {
      "query": "start_date:<2017-09-13 AND end_date:>2017-09-13"
    }
  }
}