当前位置:   article > 正文

Elasticsearch: date时间数据格式踩过的坑_es put 时间

es put 时间

1. 默认情况下

时间格式是可以自定义的,但是如果没有指定一个格式,它将使用默认的格式(时间格式里面必须包含年份,并且时间中的时分秒是可选的),例如格式:yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ or yyyy-MM-dd
说明一下:T表示分隔符,Z表示UTC世界标准时间,在标准时间上加8小时,就是北京时间
举例

#索引创建
PUT /my_test
{
  "mappings": {
    "properties": {
      "my_time":{
        "type": "date"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
#正确
PUT /my_test/_doc/1
{
  "my_time":"2015-01-01"
}
#正确
PUT /my_test/_doc/2
{
  "my_time":"2015-01-01T12:10:30Z"
}
#正确
PUT /my_test/_doc/3
{
  "my_time":"1420070400001"
}
#正确
PUT /my_test/_doc/4
{
  "my_time":"2015"
}
#错误
PUT /my_test/_doc/5
{
  "my_time":"2015-01-01 12:10:30"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

2. 指定多个数据格式

#索引创建
PUT /my_test
{
  "mappings": {
    "properties": {
      "my_time":{
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||yyyyMMdd"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
#正确
PUT /my_test/_doc/1
{
  "my_time":"2015-05-05 23:10:30"
}
#正确
PUT /my_test/_doc/2
{
  "my_time":"2015-01-01 12:10:30"
}
#正确
PUT /my_test/_doc/3
{
  "my_time":"2016-01-01 12:10:30"
}
#正确
PUT /my_test/_doc/4
{
  "my_time":"20170228"
}
#正确
PUT /my_test/_doc/5
{
  "my_time":null
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

3. 执行查询

使用es执行range在date类型字段上的查询

  1. 假设当前时间为:2022-10-26 15:46:00
  2. es中有一条时间字段为2022-10-26 15:46:00的数据
  3. 使用range进行搜索近半年的数据,语句如下
GET /my_test/_search
{
  "sort": [
    {
      "_id": {
        "order": "asc"
      }
    }
  ], 
  "query": {
    "range": {
      "my_time": {
        "gte": "2022-10-26 15:46:00||-6M",
        "lte": "2022-10-26 15:46:00"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

详细参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/query-dsl-range-query.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/837333
推荐阅读
相关标签
  

闽ICP备14008679号