所謂靜態映射就是像mysql一樣在建表的時候對各個字段的屬性進行設置:
put books
{
"mappings":{
"it":{
"dynamic":"strict",
"properties":{
"title":{
"type":"text"
},
"process":{
"type":"date"
}
}
}
},
"settings":{
"number_of_shards":2,
"number_of_replicas":0
}
}
創建索引爲:books
類型爲:it
以上索引的it類型 進行數據插入時,只要是字段不是title,process都會報錯;
put books_mappinng
{
"mappings":{
"log":{
"_all":{"enabled":false},
"properties":{
"name":{
"type":"text"
},
"number":{
"type":"integer"
},
"user_id":{
"type":"keyword"
},
"created":{
"type":"date",
"format":"strict_date_optional_time||epoch_millis"
}
}
}
},
"settings":{
"number_of_shards":2,
"number_of_replicas":0
}
}
以上創建的索引可以動態的添加的字段
例如:
首先進行兩次添加數據:
1,put books_mappinng/log
{
"name":"張三",
"number":123,
"user_id":"abc",
"created":"2019-04-04"
}
2,put books_mappinng/log
{
"name":"張三",
"number":123,
"user_id":"abc",
"created":"2019-04-04",
"auther":"niwen"
}
兩次添加後進行查詢:
get /books_mappinng/_search
返回值:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1.0,
"hits": [
{
"_index": "books_mappinng",
"_type": "log",
"_id": "5aZoLWwBlAlurtb6Fy4K",
"_score": 1.0,
"_source": {
"name": "張三",
"number": 123,
"user_id": "abc",
"created": "2019-04-04",
"auther": "niwen"
}
},
{
"_index": "books_mappinng",
"_type": "log",
"_id": "5KZnLWwBlAlurtb60C5B",
"_score": 1.0,
"_source": {
"name": "張三",
"number": 123,
"user_id": "abc",
"created": "2019-04-04"
}
}
]
}
}
可以看出一個文檔比另一個文檔多了auther字段;
如果以第一種方式創建的索引 ,第二次插入數據會報錯