elasticsearch日期類型

譯自官方文檔,原文請戳這裏html

JSON中沒有date類型,所以 es 中的日期能夠是:java

  • "2015-01-01" "2015/01/01 12:10:30" 這種字符串格式
  • 從開始紀元(1970年1月1日0點) 開始的毫秒數
  • 從開始紀元開始的秒數

es 會自動將時間轉換爲UTC(你也能夠自定義時區 time-zone),並最終存儲爲一個表明從開始紀元起計算的毫秒數。api

對日期的查詢會被自動轉換爲針對此long類型的查詢,而聚合以後的查詢結果會依據該field指定的格式從新轉爲String格式。oracle

注意:日期最終都渲染爲字符串,即便它們的初始格式在JSON中是long格式。app

Date也能夠自定義,但若是你沒有指定format,es將使用默認值:elasticsearch

"strict_date_optional_time||epoch_millis"

date支持可選的時間戳,具體格式爲 strict_date_optional_time 或 milliseconds-since-the-epoch。示例以下:ide

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date" // 1
        }
      }
    }
  }
}

PUT my_index/_doc/1
{ "date": "2015-01-01" } // 2

PUT my_index/_doc/2
{ "date": "2015-01-01T12:10:30Z" } // 3

PUT my_index/_doc/3
{ "date": 1420070400001 } // 4

GET my_index/_search
{
  "sort": { "date": "asc"} // 5
}

1 使用默認格式ui

2 使用簡單datespa

3 使用帶 time 的 datecode

4 使用毫秒偏移量

5 sort 返回的日期格式所有都是毫秒偏移量

多日期格式

你能夠使用 || 分隔符來指定多個日期格式。es將按順序進行匹配,直到找到一個可以匹配上的格式。es將用此格式將long轉爲string。

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}

date類型field的參數

date類型的field接受如下參數:

boost 提高查詢權重。浮點型,默認值 1.0
doc_values 是否使用doc_values。若是肯定不須要對此field進行排序/聚合,或者使用腳本,能夠關閉。默認true
format 日期格式。默認 strict_date_optional_time || epoch_millis
locale 用於解決月份在各語言中沒有統一縮寫的問題。默認值爲 ROOT
ignore_malformed 當設置爲true時將忽略錯誤數字。若是設置爲false,遇到錯誤時將拋出異常並拒絕掉整個document
index 若是該字段能夠被搜索,請設置爲true。默認爲true
null_value 當輸入值爲空時,使用該值來代替,必須爲format參數格式。默認爲null,意味着該字段丟失
store 字段值是否應該在_source字段以外存儲和檢索。默認false。
相關文章
相關標籤/搜索