elasticsearch 创建静态映射索引

所谓静态映射就是像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字段;

如果以第一种方式创建的索引 ,第二次插入数据会报错

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章