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