elasticsearch mapping之dynamic
dynamic:true 動態映射
這時默認的mapping參數,當我們往index添加一條數據時,es會自動為我們完善mapping
例如我們創建一個index:
往my_index中添加一條數據:
POST my_index/type {"name": "vincent","age": "20","gender": "man" }查看mapping:
當Elasticsearch遇到之前沒有遇到的字段,會默認動態創建這個字段的類型為text。
查詢時可以查詢到這條數據:
dynamic:false 靜態映射
我們創建一個index:
PUT my_index2 {"mappings": {"type": {"dynamic":"false","properties": {"name": {"type": "keyword"},"age": {"type": "keyword"}}}} }設置"dynamic":"false"
我們添加一條數據:
然后查看mapping:
可以看到mapping結構并沒有隨著數據字段的增加而動態修改。
查詢數據:
根據新增的字段gender并沒有查詢到數據,
根據name字段查詢:
發現可以查詢出結果,說明elasticsearch并沒有為新增的gender建立映射關系。所以查詢不到。
總結:當elasticsearch發現到有新增字段時,因為dynamic:false的關系,會忽略該字段,但是仍會存儲該字段。
dynamic:strict 嚴格模式
我們創建一個index:
PUT my_index3 {"mappings": {"type": {"dynamic":"false","properties": {"name": {"type": "keyword"},"age": {"type": "keyword"}}}} }當我們插入數據時:
POST my_index3/type {"name": "vincent","age": "20","gender": "man" }會報錯:
錯誤提示,嚴格動態映射異常!說人話就是,當dynamic:strict的時候,elasticsearch如果遇到新字段,會拋出異常。
總結
動態映射(dynamic:true):動態添加新的字段(或缺省)。
靜態映射(dynamic:false):忽略新的字段。在原有的映射基礎上,當有新的字段時,不會主動的添加新的映射關系,只作為查詢結果出現在查詢中。
嚴格模式(dynamic: strict):如果遇到新的字段,就拋出異常。
總結
以上是生活随笔為你收集整理的elasticsearch mapping之dynamic的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elasticsearch 集群平衡配置
- 下一篇: elasticsearch mappin