Elasticsearch 數(shù)據(jù)類型系列

核心數(shù)據(jù)類型

字符串類型

  1. string(被取代了):這是一個已經(jīng)過期的字符串類型嘀掸。在 es5 之前,用這個來描述字符串规惰,現(xiàn)在的話睬塌,它已經(jīng)被 text 和 keyword 替代了
  2. text:如果一個字段是要被全文檢索的,比如說博客內(nèi)容歇万、產(chǎn)品描述揩晴,那么可以使用 text。用了 text 之后贪磺,字段內(nèi)容會被分析硫兰,在生成倒排索引之前,字符串會被分詞器分成一個個詞項(xiàng)寒锚。text 類型的字段不用于排序劫映,很少用于聚合,這種字符串也被稱為 analyzed 字段
例如:"Elasticsearch數(shù)據(jù)類型系列" 會拆分為 
1. Elasticsearch 2. 數(shù)據(jù) 3. 類型 4. 系列 幾個詞條存儲 
搜索的時候無法完整搜索了 `arch數(shù)據(jù)` 這個內(nèi)容了
  1. keyword:這種類型適用于結(jié)構(gòu)化的字段刹前,不需要進(jìn)行分詞泳赋,可以被用來檢索過濾、排序和聚合喇喉。例如標(biāo)簽祖今、email 地址、網(wǎng)頁地址、手機(jī)號碼等等千诬,這種類型的字段可以用作過濾撒踪、排序、聚合等大渤。這種字符串也稱之為 not-analyzed 字段
例如:"Elasticsearch數(shù)據(jù)類型系列" 這句話不會分詞完整的索引存儲
數(shù)字型

long, integer, short, byte, double, float 等

image.png
日期型

date

由于 JSON 中沒有日期類型制妄,所以 es 中的日期類型形式就比較多樣
例如

PUT product/_doc/1
{
  "date":"2020-11-11"
}

PUT product/_doc/2
{
  "date":"2020-11-11T11:11:11Z"
}


PUT product/_doc/3
{
  "date":"1604672099958"
}

上面三個文檔中的日期都可以被解析,內(nèi)部存儲的是毫秒計(jì)時的長整型數(shù)

es 內(nèi)部將時間轉(zhuǎn)為 UTC泵三,然后將時間按照 millseconds-since-the-epoch 的長整型來存儲

布爾型

boolean

JSON 中的 “true”耕捞、“false”、true烫幕、false 都可以

二進(jìn)制類型

binary

二進(jìn)制接受的是 base64 編碼的字符串俺抽,默認(rèn)不存儲,也不可搜索

范圍類型
  1. integer_range
  2. float_range
  3. long_range
  4. double_range
  5. date_range
  6. ip_range

指定范圍的時较曼,可以使用 gt磷斧、gte、lt捷犹、lte弛饭。

復(fù)合(雜)數(shù)據(jù)類型

數(shù)組類型

數(shù)組中的元素必須是同一種類型,添加數(shù)組時萍歉,數(shù)組中的第一個元素決定了整個數(shù)組的類型
數(shù)組類型(Array datatype):數(shù)組類型不需要專門指定數(shù)組元素的type侣颂,例如:
字符型數(shù)組: [ "one", "two" ]
整型數(shù)組:[ 1, 2 ]
數(shù)組型數(shù)組:[ 1, [ 2, 3 ]] 等價于[ 1, 2, 3 ]
對象數(shù)組:[ { "name": "Mary", "age": 12 }, { "name": "John", "age": 10 }]

對象類型(Object datatype):_ object _ 用于單個JSON對象;例如:
PUT product/_doc/2
{
  "date":"2020-11-11T11:11:11Z",
  "ext_info":{
    "address":"China"
  }
}
嵌套類型(Nested datatype):_ nested _ 用于JSON數(shù)組枪孩;例如要存儲下面的文檔:
{
  "user":[
    {
      "first":"Zhang",
      "last":"san"
    },
    {
      "first":"Li",
      "last":"si"
    }
   ]
}
地理位置類型

使用場景:

  • 查找某一個范圍內(nèi)的地理位置
  • 通過地理位置或者相對中心點(diǎn)的距離來聚合文檔
  • 把距離整個到文檔的評分中
  • 通過距離對文檔進(jìn)行排序

分為兩大類:地理坐標(biāo)憔晒,地理形狀

  1. 地理坐標(biāo)類型(Geo-point datatype):geo_point 用于經(jīng)緯度坐標(biāo);
    geo_point 就是一個坐標(biāo)點(diǎn)蔑舞,定義方式如下:
PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_point"
      }
    }
  }
}

創(chuàng)建時指定字段類型拒担,存儲的時候,有四種方式:

中山公園附近隨便選了一個坐標(biāo) 121.41,31.21

PUT people/_doc/1
{
  "location":{
    "lat": 121.41,
    "lon": 31.21
  }
}

PUT people/_doc/2
{
  "location":"121.41,31.21"
}

PUT people/_doc/3
{
  "location":"wtw3dc8"  // 這個為經(jīng)緯度哈希值
}

PUT people/_doc/4
{
  "location":[31.21,121.41]  // 使用數(shù)組描述攻询,先經(jīng)度后緯度
}

推薦一個在線經(jīng)緯度轉(zhuǎn)哈希工具 http://www.geohash.cn/

  1. 地理形狀類型(Geo-Shape datatype):geo_shape 用于類似于多邊形的復(fù)雜形狀从撼;


    image.png

指定 geo_shape 類型:

PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_shape"
      }
    }
  }
}

添加文檔時需要指定具體的類型:

PUT people/_doc/1
{
  "location":{
    "type":"point",
    "coordinates": [108.94,34.27]
  }
}

如果是 linestring,如下:

PUT people/_doc/2
{
  "location":{
    "type":"linestring",
    "coordinates": [[108.94,34.27],[100,33]]
  }
}
特定類型
  1. IPv4 類型(IPv4 datatype):_ ip _ 用于IPv4 地址蜕窿;
    存儲 IP 地址谋逻,類型是 ip:
PUT blog
{
  "mappings": {
    "properties": {
      "address":{
        "type": "ip"
      }
    }
  }
}

添加文檔:

PUT blog/_doc/1
{
  "address":"192.168.91.1"
}

搜索文檔:

GET blog/_search
{
  "query": {
    "term": {
      "address": "192.168.0.0/16"
    }
  }
}
  1. Completion 類型(Completion datatype):_ completion _提供自動補(bǔ)全建議;

  2. Token count 類型(Token count datatype):_ token_count _ 用于統(tǒng)計(jì)做了標(biāo)記的字段的index數(shù)目桐经,該值會一直增加毁兆,不會因?yàn)檫^濾條件而減少

統(tǒng)計(jì)字符串分詞后的詞項(xiàng)個數(shù)。

PUT blog
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text",
        "fields": {
          "length":{
            "type":"token_count",
            "analyzer":"standard"
          }
        }
      }
    }
  }
}

相當(dāng)于新增了 title.length 字段用來統(tǒng)計(jì)分詞后詞項(xiàng)的個數(shù)
添加文檔:

PUT blog/_doc/1
{
  "title":"zhang san"
}

可以通過 token_count 去查詢:

GET blog/_search
{
  "query": {
    "term": {
      "title.length": 2
    }
  }
}
  1. 類型:通過插件阴挣,可以通過 _ murmur3 _ 來計(jì)算 index 的 hash 值气堕;

  2. 附加類型(Attachment datatype):采用 mapper-attachments
    插件,可支持_ attachments _ 索引,例如 Microsoft Office 格式茎芭,Open Document 格式揖膜,ePub, HTML 等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梅桩,隨后出現(xiàn)的幾起案子壹粟,更是在濱河造成了極大的恐慌,老刑警劉巖宿百,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趁仙,死亡現(xiàn)場離奇詭異,居然都是意外死亡垦页,警方通過查閱死者的電腦和手機(jī)雀费,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痊焊,“玉大人盏袄,你說我怎么就攤上這事”∩叮” “怎么了辕羽?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罪佳。 經(jīng)常有香客問我逛漫,道長,這世上最難降的妖魔是什么赘艳? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮克握,結(jié)果婚禮上蕾管,老公的妹妹穿的比我還像新娘。我一直安慰自己菩暗,他們只是感情好掰曾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著停团,像睡著了一般旷坦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佑稠,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天秒梅,我揣著相機(jī)與錄音,去河邊找鬼舌胶。 笑死捆蜀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辆它,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼誊薄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锰茉?” 一聲冷哼從身側(cè)響起呢蔫,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎飒筑,沒想到半個月后片吊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扬霜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年定鸟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著瓶。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡联予,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出材原,到底是詐尸還是另有隱情沸久,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布余蟹,位于F島的核電站卷胯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏威酒。R本人自食惡果不足惜窑睁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葵孤。 院中可真熱鬧担钮,春花似錦、人聲如沸尤仍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宰啦。三九已至苏遥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赡模,已是汗流浹背田炭。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺裁,地道東北人诫肠。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓司澎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栋豫。 傳聞我的和親對象是個殘疾皇子挤安,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容