(1)string
string類型在ElasticSearch 舊版本中使用較多,從ElasticSearch 5.x開始再也不支持string,由text和keyword類型替代。
(2)text
當一個字段是要被全文搜索的,好比Email內容、產品描述,應該使用text類型。
設置text類型之後,字段內容會被分析,在生成倒排索引之前,字符串會被分析器分紅一個一個詞項。text類型的字段不用於排序,不多用於聚合。
(3)keyword
keyword類型適用於索引結構化的字段,好比email地址、主機名、狀態碼和標籤。
若是字段須要進行過濾(好比查找已發佈博客中status屬性爲published的文章)、排序、聚合。
keyword類型的字段只能經過精確值搜索到。node
類型 | 取值範圍 |
---|---|
byte | -128~127 |
short | -32768~32767 |
integer | -2^31~2^31-1 |
long | -2^63~2^63-1 |
double,float ,half_float,scaled_float數組
UNIX在內部採用了一種最簡單的計時方式app
ElasticSearch 內部會將日期數據轉換爲UTC,並存儲爲milliseconds-since-the-epoch的long型整數。 post
相關操做:code
1.建立索引 PUT test { "mappings":{ "my":{ "properties": { "postdate":{ "type":"date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } } } 2.寫入文檔 PUT test/my/1 { "postdate":"2018-01-13" } PUT test/my/2 { "postdate":"2018-01-01 00:01:05" } PUT test/my/3 { "postdate":"1420077400001" } 3.批量查詢 GET test/my/_mget { "ids":["1","2","3"] }
邏輯類型(布爾類型)能夠接受true/false/」true」/」false」值orm
二進制字段是指用base64來表示索引中存儲的二進制數據,可用來存儲二進制形式的數據,例如圖像。默認狀況下,該類型的字段只存儲不索引。二進制類型只支持index_name屬性。對象
在ElasticSearch中,沒有專門的數組(Array)數據類型,
可是,在默認狀況下,任意一個字段均可以包含0或多個值,這意味着每一個字段默認都是數組類型排序
在同一個數組中,數組元素的數據類型是相同的,ElasticSearch不支持元素爲多個數據類型:[ 10, 「some string」 ],經常使用的數組類型是:索引
(1)字符數組: [ 「one」, 「two」 ]
(2)整數數組: productid:[ 1, 2 ]
(3)對象(文檔)數組: 「user」:[ { 「name」: 「Mary」, 「age」: 12 }, { 「name」: 「John」, 「age」: 10 }],ElasticSearch內部把對象數組展開爲 {「user.name」: [「Mary」, 「John」], 「user.age」: [12,10]}ip
JSON天生具備層級關係,文檔會包含嵌套的對象
DELETE test PUT test PUT test/my/1 { "employee":{ "age":30, "fullname":{ "first":"hadron", "last":"cheng" } } } GET /test/_mapping { "test": { "mappings": { "my": { "properties": { "employee": { "properties": { "age": { "type": "long" }, "fullname": { "properties": { "first": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "last": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } } } } } } }
ip類型的字段用於存儲IPv4或者IPv6的地址
PUT test { "mappings": { "my":{ "properties": { "nodeIP":{ "type": "ip" } } } } }