(五)ElasticSearch 6.1.1数据类型
1、elasticsearch的數據類型
1.1、核心數據類型
1.1.1、字符串類型(string不再支持)
當一個字段需要用于全文搜索(會被分詞), 比如產品名稱、產品描述信息, 就應該使用text類型.
text的內容會被分詞, 可以設置是否需要存儲: “index”: “true|false”.
text類型的字段不能用于排序, 也很少用于聚合.
當一個字段需要按照精確值進行過濾、排序、聚合等操作時, 就應該使用keyword類型.
keyword的內容不會被分詞, 可以設置是否需要存儲: “index”: “true|false”.
1.1.2 數字類型
| byte | 有符號的8位整數, 范圍: [-128 ~ 127] |
| short | 有符號的16位整數, 范圍: [-32768 ~ 32767]nteger |
| integer | 有符號的32位整數, 范圍: [?231 ~ 231-1] |
| long | 有符號的64位整數, 范圍: [?263 ~ 263-1] |
| float | 32位單精度浮點數 |
| double | 64位雙精度浮點數 |
| half_float | 16位半精度IEEE 754浮點類型 |
| scaled_float | 縮放類型的的浮點數, 比如price字段只需精確到分, 57.34縮放因子為100, 存儲結果為5734 |
1.1.3 日期類型 - date
JSON沒有日期數據類型, 所以在ES中, 日期可以是:
包含格式化日期的字符串, “2018-10-01”, 或"2018/10/01 12:10:30".
代表時間毫秒數的長整型數字.
代表時間秒數的整數.
1.2、復雜數據類型
1.2.1 數組類型 - array
ES中沒有專門的數組類型, 直接使用[]定義即可;
數組中所有的值必須是同一種數據類型, 不支持混合數據類型的數組:
① 字符串數組: [“one”, “two”];
② 整數數組: [1, 2];
③ 由數組組成的數組: [1, [2, 3]], 等價于[1, 2, 3];
④ 對象數組: [{“name”: “Tom”, “age”: 20}, {“name”: “Jerry”, “age”: 18}].
- 動態添加數據時, 數組中第一個值的類型決定整個數組的類型;
- 不支持混合數組類型, 比如[1, “abc”];
- 數組可以包含null值, 空數組[]會被當做missing field —— 沒有值的字段
1.2.2 對象類型 - object
JSON文檔是分層的: 文檔可以包含內部對象, 內部對象也可以包含內部對象.
# 添加示例 PUT employee/developer/1 {"name": "ma_shoufeng","address": {"region": "China","location": {"province": "GuangDong", "city": "GuangZhou"}} } # 存儲方式 {"name": "ma_shoufeng","address.region": "China","address.location.province": "GuangDong", "address.location.city": "GuangZhou" }# 文檔的映射結構 PUT employee {"mappings": {"developer": {"properties": {"name": { "type": "text", "index": "true" }, "address": {"properties": {"region": { "type": "keyword", "index": "true" },"location": {"properties": {"province": { "type": "keyword", "index": "true" },"city": { "type": "keyword", "index": "true" }}}}}}}} }1.2.3 嵌套類型 - nested
嵌套類型是對象數據類型的一個特例, 可以讓array類型的對象被獨立索引和搜索.
對象數組是如何存儲的
用nested類型解決object類型的不足
如果需要對以最對象進行索引, 且保留數組中每個對象的獨立性, 就應該使用嵌套數據類型.
—— 嵌套對象實質是將每個對象分離出來, 作為隱藏文檔進行索引.
參考資料
總結
以上是生活随笔為你收集整理的(五)ElasticSearch 6.1.1数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java:idea查看JDK源码
- 下一篇: Google开发者模式调试css样式的方