本文為博主原創,未經允許不得轉載:
1.ES 中的映射可以分為動態映射和靜態映射
動態映射:在關系數據庫中,需要事先創建數據庫,然后在該數據庫下創建數據表,並創建表字段、類型、長度、主鍵等,最后才能基於表插入數據。而Elasticsearch中不需要定義Mapping映射(即關系型數據庫的表、字段等),在文檔寫入Elasticsearch時,會根據文檔字段自動識別類型,這種機制稱之為動態映射。
靜態映射: 在Elasticsearch中也可以事先定義好映射,包含文檔的各字段類型、分詞器等,這種方式稱之為靜態映射
動態映射語法:
1. 創建索引:
PUT /es_db
2. 創建文檔
PUT /es_db/_doc/1 { "name": "Jack", "sex": 1, "age": 25, "book": "java入門至精通", "address": "大西北" }
3. 獲取文檔映射:
GET /es_db/_mapping
4. 刪除索引
DELETE /es_db
靜態映射
1. 創建索引
PUT /es_db
2. 設置文檔映射
PUT /es_db { "mappings": { "properties": { "name": {"type": "keyword","index": true,"store": true}, "sex": {"type": "integer","index": true,"store": true}, "age": {"type": "integer","index": true,"store": true}, "book": {"type": "text","index": true,"store": true}, "address": {"type": "text", "index": true, "store": true} } } }
設置book 字段的分詞器為 ik 中文分詞器:
"book": {"type": "text","index": true,"store": true,"analyzer":"ik_smart","sea rch_analyzer":"ik_smart"},
3. 根據靜態映射創建文檔
PUT /es_db/_doc/1 { "name": "Jack", "sex": 1, "age": 25, "book": "elasticSearch入門至精通", "address": "我的大西北" }
4. 獲取文檔映射
GET /es_db/_mapping
5. 查看 索引 創建信息
GET /es_db/_settings
數據類型:
text:該類型被用來索引長文本,在創建索引前會將這些文本進行分詞,轉化為的組合,建立索引;允許es來檢索這些詞,text類型不能用來排序和聚合。
keyword:該類型不能分詞,可以被用來檢索過濾、排序和聚合,keyword類型不可用text進行分詞模糊檢索。
數值型:long、integer、short、byte、double、float
日期型:date
布爾型:boolean