Elasticsearch嘗試索引你提供給它的全部字段,但有時你但願只存儲字段而不索引它,例如,假設你使用Elasticsearch做爲web會話存儲,你可能但願索引會話ID和上次更新時間,但不須要查詢或運行會話數據自己的聚合。web
enabled
設置只能應用於頂級映射定義和對象字段,這會致使Elasticsearch徹底跳過字段內容的解析,JSON仍然能夠從_source
字段中檢索,但它不能搜索或以任何其餘方式存儲:session
PUT my_index { "mappings": { "properties": { "user_id": { "type": "keyword" }, "last_updated": { "type": "date" }, "session_data": { "type": "object", "enabled": false } } } } PUT my_index/_doc/session_1 { "user_id": "kimchy", "session_data": { "arbitrary_object": { "some_array": [ "foo", "bar", { "baz": 2 } ] } }, "last_updated": "2015-12-06T18:20:22" } PUT my_index/_doc/session_2 { "user_id": "jpountz", "session_data": "none", "last_updated": "2015-12-06T18:22:13" }
session_data
字段。session_data
字段,由於它將被徹底忽略。session_data
還將忽略非JSON對象的值。整個映射也可能被禁用,在這種狀況下,文檔存儲在_source
字段中,這意味着能夠檢索它,可是沒有以任何方式索引它的內容:app
PUT my_index { "mappings": { "enabled": false } } PUT my_index/_doc/session_1 { "user_id": "kimchy", "session_data": { "arbitrary_object": { "some_array": [ "foo", "bar", { "baz": 2 } ] } }, "last_updated": "2015-12-06T18:20:22" } GET my_index/_doc/session_1 GET my_index/_mapping
沒法更新現有字段的enabled
設置和頂級映射定義。code
注意,因爲Elasticsearch徹底跳過了對字段內容的解析,因此能夠將非對象數據添加到禁用的字段:對象
PUT my_index { "mappings": { "properties": { "session_data": { "type": "object", "enabled": false } } } } PUT my_index/_doc/session_1 { "session_data": "foo bar" }
session_data
包含非對象數據。