date - Elasticsearch 中的日期过滤器

标签 date search range elasticsearch

我正在尝试使用以下语法在 Elasticsearch 上创建范围过滤器:

{
"size": 100,
"filter": {
"and": {
  "filters": [
    {
      "range": {
        "listingDate": {
          "gt": "15/07/2017 16:08:53"
        }
      }
    }
  ]
}
}
}

数据格式为:
"listingDate": "07/07/2015 09:30:00",

但是,无论过滤器属性如何, Elasticsearch 都会返回相同的错误结果。我尝试添加以下格式:
"format": "dd/MM/yyyy HH:mm:ss"

但我得到同样的错误结果。

一个完整的例子是:
{
"size": 100,
"sort": [
{
  "listingDate": {
    "order": "asc"
  }
}
],
"query": {
"bool": {
  "must": [
    {
      "query_string": {
        "query": "Event"
      }
    },
    {
      "range": {
        "listingDate": {
          "gte": "15/07/2015 16:08:53"
        }
      }
    },
    {
      "range": {
        "endDate": {
          "gte": "15/07/2015 16:08:53"
        }
      }
    }
  ]
}
},
"filter": {
"and": {
  "filters": [
    {
      "terms": {
        "departments": [
          "2393"
        ]
      }
    }
  ]
}
}
} 

最佳答案

在JSON文档中,日期表示为字符串。 Elasticsearch使用一组预配置的格式来识别这些字符串并将其解析为一个长值,该长值表示UTC以来的毫秒数。您的日期字段可能未在预配置的ES日期formats集中列出。

默认情况下,格式化的日期将使用date字段上指定的格式进行解析,但是可以通过将format参数传递给范围查询来覆盖它。

{
    "range" : {
        "listingDate" : {
            "gte": "07/07/2015 09:30:00",
            "format": "dd/MM/yyyy HH:mm:ss"
        }
    }
}

关于date - Elasticsearch 中的日期过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449502/

相关文章:

kotlin - Kotlin 山脉

javascript - 函数目标 ID 范围

java - JPA在MySQL数据库中保存错误的日期

java - 在 Java 中将 Long 转换为 Date 返回 1970

php - 使用自定义搜索选项在两个表中搜索 mysql 数据

php - 使用 LIKE 查询 MySQL 范围

PHP 将文本月、日和年转换为 MySQL 表的日期数据

r - R不知道时间是循环的吗?如何找到一天中最接近给定时间的时间

linux - 从终端在 linux 中搜索/查找名称带有整数的文件夹

ajax - 针对 Google 搜索优化基于 Ajax 的网站