ElasticSearch 常用字段類型


 

ES常用的數據類型可分為3大類

  • 核⼼數據類型
  • 復雜數據類型
  • 專⽤數據類型

 

 

核心數據類型

(1)字符串

  • text  ⽤於全⽂索引,搜索時會自動使用分詞器進⾏分詞再匹配
  • keyword  不分詞,搜索時需要匹配完整的值

 

 

(2)數值型

  • 整型: byte,short,integer,long
  • 浮點型: float, half_float, scaled_float,double

 

 

(3)日期類型

  • date

json沒有date類型,插入|更新文檔|字段時怎么表示date類型?

#mapping,將字段類型設置為date
"type" : "date" 


#插入|更新此字段的值時,有3種表示方式

#使用固定格式的字符串
"2020-04-18""2020/04/18 09:00:00"   

#值使用長整型的時間戳,1970-01-01 00:00:00,s
1610350870    

#值使用長整型的時間戳,ms
1641886870000

 

 

(4)范圍型

integer_range, long_range, float_range,double_range,date_range

比如招聘要求年齡在[20, 40]上,mapping:

age_limit :{
 "type" : "integer_range"
}

 

插入|更新文檔|字段時,值寫成json對象的形式:

"age_limit" : {
 "gte" : 20,
 "lte" : 40
}

gt是大於,lt是小於,e是equals等於。

 

按此字段搜索時,值寫常量:

"term" : {
 "age_limit" : 30
}

age_limit的區間包含了此值的文檔都算是匹配。

 

 

(5)布爾

  • boolean     #true、false

 

 

(6)⼆進制

  • binary   會把值當做經過 base64 編碼的字符串,默認不存儲,且不可搜索

 

 

 

復雜數據類型

(1)對象

  • object
#定義mapping
"user" : {
    "type":"object"
}


#插入|更新字段的值,值寫成json對象的形式
"user" : {
    "name":"chy",
    "age":12
}


#搜索時,字段名使用點號連接
"match":{
     "user.name":"chy"
 }

一個對象中可以嵌套對象。

 

 

(2)數組

#ES沒有專門的數組類型,定義mapping,寫成元素的類型
"arr" : {
    "type":"integer"
}


#插入|更新字段的值。元素可以是各種類型,但元素的類型要相同
"arr" : [1,3,4]

 

 

 

 

專用數據類型

  • ip
#定義mapping
"ip_address" : {
    "type":"ip"
}


#插入|更新字段的值,值寫成字符串形式
"ip" : "192.168.1.1"


#搜索
"match":{
     "ip_address":"192.168.1.1"
 }


#ip在192.168.0.0 ~ 192.168.255.255上的文檔都匹配
"match":{
     "ip_address":"192.168.0.0/16"
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM