如何在Elasticsearch中搜索确切的日期匹配

时间:2016-11-21 21:10:21

标签: elasticsearch

我的ES数据库中有几个项目,例如包含2020-02-26T05:24:55.757Z的字段。是否可以(使用URI搜索,_search?q = ...)搜索确切的日期?例如,在这种情况下,我想查找2020-02-26的项目。这可能吗?

2 个答案:

答案 0 :(得分:1)

是的,有可能。您可以参考查询字符串documentation以获取更多信息。

curl localhost:9200/your_index_name/_search?q=your_date_field:%7B2020-02-26%20TO%20*%7D

您需要编码网址。查询部分看起来像q=your_date_field:{2020-02-26 TO *}

REST api中的上述查询看起来像

{
  "query": {
    "range": {
      "your_date_field": {
        "gte": "2020-02-26"
      }
    }
  }
}

以下exact日期可行

curl localhost:9200/your_index_name/_search?q=your_date_field:2020-02-26

答案 1 :(得分:0)

虽然这个问题很老,但我遇到过,所以也许其他人也会这样做。

如果您只想在 UTC 中工作,您可以使用 match 查询,例如:

{
  "query": {
    "match": {
      "your_date_field": {
        "query": "2020-02-26"
      }
    }
  }
}

如果您需要考虑在不同时区的特定日期匹配的事物,则必须使用 range 查询,例如:

{
  "query": {
    "range": {
      "your_date_field": {
        "gte": "2020-02-26",
        "lte": "2020-02-26",
        "time_zone": "-08:00"
      }
    }
  }
}