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字段;

如果以第一種方式創建的索引 ,第二次插入數據會報錯

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