国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Elasticsearch教程11】Mapping字段類型之日期時間date date_nanos

這篇具有很好參考價值的文章主要介紹了【Elasticsearch教程11】Mapping字段類型之日期時間date date_nanos。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、日期格式

1.1 簡介

JSON沒有date類型,但我們可以把以下類型作為日期時間存入ES。

類型 說明
字符串 日期格式的字符串,如"2015-01-01"或"2015/01/01 12:10:30"
長整型 從開始紀元(1970-01-01 00:00:00 UTC)開始的毫秒數(shù)
整型 從開始紀元(1970-01-01 00:00:00 UTC)開始的秒數(shù)

上面的UTC(Universal Time Coordinated) 叫做世界統(tǒng)一時間,中國大陸和 UTC 的時差是 + 8 ,也就是 UTC+8。在ES內(nèi)部,時間以毫秒數(shù)(long型)存儲,而展現(xiàn)有多種format格式。

date的格式可以被指定的,如果沒有指定,默認“strict_date_optional_time || epoch_millis”
strict_date_optional_time或者epoch_millis)。

1.2 什么是epoch_millis?

  • epoch_millis就是從開始紀元(1970-01-01 00:00:00 UTC)開始的毫秒數(shù)(long型)。
  • 1970以前的時間也可以, 值是負數(shù)。

如下圖,2020/8/31 14:57:56是常用的日期格式,它距離1970-01-01 00:00:00 有 1598857076000豪秒。所以可以用1598857076000表示2020/8/31 14:57:56。
strict_date_optional_time,Elasticsearch教程(New),Elasticsearch,elasticsearch,大數(shù)據(jù),日期時間,date

1.3 什么是strict_date_optional_time?

strict_date_optional_timedate_optional_time的嚴格級別,這個嚴格指的是年份、月份、天必須分別以4位、2位、2位表示,不足兩位的話第一位需用0補齊。常見格式如下:

  • yyyy
  • yyyyMM
  • yyyyMMdd
  • yyyyMMddHHmmss
  • yyyy-MM
  • yyyy-MM-dd
  • yyyy-MM-ddTHH:mm:ss dd后面有個T
  • yyyy-MM-ddTHH:mm:ss.SSS
  • yyyy-MM-ddTHH:mm:ss.SSSZ

工作常見到是yyyy-MM-dd HH:mm:ss,但ES默認不支持這格式,我們可以在format里自定義支持它。上面最后一個里大寫的"Z"表示時區(qū)。

二、實驗

2.1 測試date類型

新增一個索引,設(shè)置birthday是date格式。

#ES7去掉了type,所以mappings下面一層不用寫“_doc”
PUT /test_date_index
{
    "mappings":{
        "properties":{
            "birthday":{
                "type":"date"
            }
        }
    }
}

測試存入時間格式

PUT test_date_index/_doc/0
{
  "birthday":"2020-08"
}

PUT test_date_index/_doc/1
{
  "birthday":"2020-08-31"
}

PUT test_date_index/_doc/2
{
  "birthday":"2020-08-31T14:32"
}

PUT test_date_index/_doc/3
{
  "birthday":"2020-08-31T14:32:11"
}

PUT test_date_index/_doc/4
{
  "birthday":"1598857076000"
}

#1970以前的時間也可以, 值是負數(shù)
PUT test_date_index/_doc/5
{
  "birthday":"1955-08-31T14:32:11"
}

2.2 測試錯誤的格式:yyyy-MM-ddTHH:mm:s

因為秒只有1位,左側(cè)沒有補0,所以不是合法格式。

#插入yyyy-MM-ddTHH:mm:s格式
PUT test_date_index/_doc/3
{
  "bithday":"2020-08-31T14:32:1"
}

結(jié)果報錯:
"type" : "illegal_argument_exception",
"reason" : "failed to parse date field [2020-08-31T14:32:1] with format [strict_date_optional_time||epoch_millis]",

2.3 測試錯誤的格式:yyyy-MM-dd HH:mm:ss

#插入yyyy-MM-dd HH:mm:ss格式
PUT /test_date_index/_doc/3
{
  "birthday": "2020-03-01 16:29:41"
}

結(jié)果報錯:
"caused_by": {
  "type": "illegal_argument_exception",
  "reason": "Invalid format: \"2020-03-01 16:29:41\" is malformed at \" 16:29:41\""
}
#插入 yyyy-MM-ddTHH:mm:ss格式,ES返回成功
PUT /test_date_index/_doc/4
{
  "birthday": "2020-03-01T16:29:41"
}

三、混合日期格式

date類型,還支持一個參數(shù)format,它讓我們可以自己定制化日期格式。
比如format配置了格式A||格式B||格式C,插入一個值后,會從左往右匹配,直到有一個格式匹配上。

舉例:你想一個字段同時支持yyyy-MM-dd HH:mm:ss、yyyy-MM-dd、epoch_millis這3種格式,沒有問題,只需在format上設(shè)置這3個格式,它們在ES內(nèi)部都是按照long類型存儲的。

#重建索引
PUT /test_date_index
{
    "mappings":{
        "properties":{
            "birthday":{
                "type":"date",
                "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
            }
        }
    }
}

PUT /test_date_index/_doc/1
{
  "birthday": "2020-03-01 16:29:41"
}

PUT /test_date_index/_doc/2
{
  "birthday": "2020-02-29"
}

#2020/03/01 17:44:09的毫秒級時間戳
PUT /test_date_index/_doc/3
{
  "birthday": 1583055849000
}

四、date_nanos,支持納秒

date類型支持到毫秒,如果特殊情況下用到納秒得用date_nanos類型。

#創(chuàng)建一個index,其date字段是date_nanos類型,支持納秒
PUT my_index?include_type_name=true
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date_nanos" 
        }
      }
    }
  }
}

#和普通的date類型一樣,可以存strict_date_optional_time||epoch_millis這些格式的
#不過在es內(nèi)部是存的長整型是納秒單位的
PUT my_index/_doc/1
{ "date": "2015-01-01" } 

#存一個具體到納秒的值
PUT my_index/_doc/2
{ "date": "2015-01-01T12:10:30.123456789Z" } 

#存的是整型,說明是秒,換成日期就是2015/1/1 8:0:0
#但是在es內(nèi)部,會以納秒為單位的long類型存儲
PUT my_index/_doc/3
{ "date": 1420070400 } 

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

五、性能優(yōu)化

  • 如果不在日期時間字段上做排序、聚合和script腳本操作,可以設(shè)置doc_value為false。
  • 如果不在日期時間字段上做檢索,只是做展示用,可以設(shè)置index為false。

如果本文對您有幫助,就給亞瑟王點個贊??吧文章來源地址http://www.zghlxwxcb.cn/news/detail-820191.html

到了這里,關(guān)于【Elasticsearch教程11】Mapping字段類型之日期時間date date_nanos的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • elasticsearch 將時間類型為時間戳保存格式的時間字段格式化返回
  • ElasticSearch索引mapping添加字段

    ElasticSearch索引mapping添加字段

    ES版本5.3.0,在已存在的索引mapping中添加字段。 如下: my_index索引名稱,my_type為索引類型名稱,new_field_name為新增的字段名稱。 如下: 返回為true代表添加操作成功。

    2024年02月13日
    瀏覽(25)
  • Elasticsearch Mapping字段未支持索引導致搜索失效

    生產(chǎn)上Es根據(jù)一個時間字段搜索,卻沒有返回數(shù)據(jù) 根據(jù)命令: GET indexName/_mapping 查看 count_name設(shè)置了 “index”: false 導致根據(jù)該字段搜索導致索引不生效。 ES的mappings 定義好了生成索引后是不支持修改現(xiàn)有的字段的,只能新增屬性。 使用 reindex 命令處理 1、運行命令: GET ind

    2024年02月11日
    瀏覽(23)
  • ElasticSearch數(shù)據(jù)庫修改分片數(shù)、副本數(shù)及修改mapping字段

    ElasticSearch數(shù)據(jù)庫修改分片數(shù)、副本數(shù)及修改mapping字段

    ????????對于已經(jīng)存在的索引,副本數(shù)可以隨時修改。 示例演示如下: ????????ElasticSearch中的數(shù)據(jù)會被分別存儲在不同的分片上,索引庫的分片數(shù)量是在索引庫創(chuàng)建的時候通過settings去設(shè)置的,如果不設(shè)置,分片數(shù)默認是5,分片數(shù)一旦確定就不能改變。分片數(shù)量的設(shè)

    2024年02月02日
    瀏覽(19)
  • es elasticsearch 八 mapping 映射 、復(fù)雜數(shù)據(jù)類型

    es elasticsearch 八 mapping 映射 、復(fù)雜數(shù)據(jù)類型

    目錄 Mapping 映射 復(fù)雜數(shù)據(jù)類型 Mapping 映射 精確匹配 必須和對應(yīng)字段值安全一致才可查出 全文檢索 縮寫搜索全程、格式轉(zhuǎn)換 大小寫 同義詞 全文檢索核心原理 分詞,初步的倒排索引的建立 重建倒排索引 時態(tài)轉(zhuǎn)換、重復(fù)數(shù)的轉(zhuǎn)換、同義詞的轉(zhuǎn)換、大小寫的轉(zhuǎn)換 分詞器 analy

    2024年02月07日
    瀏覽(30)
  • 如何將 performance_schema 中的 TIMER 字段轉(zhuǎn)換為日期時間

    最近有好幾個朋友問,如何將 performance_schema.events_statements_xxx 中的 TIMER 字段(主要是TIMER_START和TIMER_END)轉(zhuǎn)換為日期時間。 因為 TIMER 字段的單位是皮秒(picosecond),所以很多童鞋會嘗試直接轉(zhuǎn)換,但轉(zhuǎn)換后的結(jié)果并不對,看下面這個示例。 下面會從源碼角度分析 TIMER 字段

    2024年02月05日
    瀏覽(16)
  • TIDB日期和時間類型

    TIDB日期和時間類型 DATE、DATETIME和TIMESTAMP 1、 DATE DATE 類型的格式為 YYYY-MM-DD,支持的范圍是 1000-01-01 到 9999-12-31。 2、 TIME 類型 TIME 類型的格式為 HH:MM:SS[.fraction],支持的范圍是 -838:59:59.000000 到 838:59:59.000000。TIME 不僅可用于指示一天內(nèi)的時間,還可用于指兩個事件之間的時間間

    2024年02月08日
    瀏覽(23)
  • SQL Server ,日期時間函數(shù)將時間日期類型的值截取為年月日

    使用 CONVERT 函數(shù)將日期時間類型的值轉(zhuǎn)換為字符串類型,同時指定格式為 yyyyMMdd(例如2022年6月30日的日期字符串為\\\'20220630\\\')。 sql復(fù)制代碼 在上述例子中,我們使用 GETDATE 函數(shù)獲取當前的日期時間,然后使用 CONVERT 函數(shù)將其轉(zhuǎn)換為格式為 yyyyMMdd 的字符串類型。 如果要將日期

    2024年02月16日
    瀏覽(30)
  • sql字段類型和時間格式轉(zhuǎn)換

    在SQL中,字段類型格式轉(zhuǎn)換是指將數(shù)據(jù)從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型的過程。這通常涉及將字符串轉(zhuǎn)換為日期、將數(shù)字轉(zhuǎn)換為字符串、將整數(shù)轉(zhuǎn)換為浮點數(shù)等。 SQL字段類型格式轉(zhuǎn)換的原理如下: 顯式轉(zhuǎn)換:顯式轉(zhuǎn)換是指用戶明確指定要執(zhí)行的數(shù)據(jù)類型轉(zhuǎn)換。這可以

    2024年02月08日
    瀏覽(21)
  • 【?MySQL | 數(shù)據(jù)類型(一)】簡介 | 整數(shù) | 浮點 | 定點 | 時間/日期類型

    【?MySQL | 數(shù)據(jù)類型(一)】簡介 | 整數(shù) | 浮點 | 定點 | 時間/日期類型

    ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL數(shù)據(jù)類型簡介 | 整數(shù) | 浮點 | 定點 | 時間/日期類型的分享 ? 0.數(shù)據(jù)類型簡介 數(shù)據(jù)類型(data_type)是指系統(tǒng)中所允許的數(shù)據(jù)的類型。MySQL 數(shù)據(jù)類型定義了列中可以存儲什么數(shù)據(jù)以及該數(shù)據(jù)怎樣存儲的規(guī)則。 數(shù)據(jù)庫中的每個列都

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包