所谓静态映射就是像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字段;
如果以第一种方式创建的索引 ,第二次插入数据会报错