elasticsearch在新版本中逐漸弱化了類型的概念,現在elasticsearch主流數據結構如下
index(索引)->type(類型-逐漸弱化,用處不大)->document(文檔)-field(字段)
在elasticsearch中index相當於mysql中的表,而文檔則相當於表中的一行一行記錄,字段那就不用說了自然是數據庫中的列,這麼說的話大家應該能夠有一個比較清晰的認識了.,接下來我們一步一步深入的去了解每個名詞的具體使用場景.
1. 索引
在elasticsearch中爲了能夠跨語言的使用,對外提供了一系列的http協議的restful風格的接口,下面我們就結合接口和elasticsearch-head來爲大家演示一下elasticsearch的使用
創建索引
如果不攜帶任何參數的請求,則默認創建主分片一個,副本分片一個
PUT http://127.0.0.1:9200/index_test/
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "index_test"
}
查看索引
調用下面的請求即可查詢到索引的信息,但是這是一個空索引,包含了主分片一個,副本分片一個,但是mappings對應的屬性是爲空的,待會爲大家介紹mappings的作用
GET http://127.0.0.1:9200/index_test/
{
"index_test": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"creation_date": "1593699742333",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "8UtZxRdSRaG_aEG3RfsHmQ",
"version": {
"created": "7080099"
},
"provided_name": "index_test"
}
}
}
}
刪除索引
DELETE http://127.0.0.1:9200/index_test/
{
"acknowledged": true
}
上面就是索引的一系列操作,其實就是restful風格的各種接口調用
接下來爲大家解釋下索引中的mappings的含義,這在索引中是一個非常重要的概念,剛纔大家在上面也看到了我查詢剛創建的索引index_test後得到的json信息
"mappings": {}
這個mappings其實就是索引的映射,也可以理解爲是索引的數據結構,如果把索引作爲mysql中的一張表的話,mappings就是表的字段,mappings爲空則代表當前表中沒有一個字段.
所以接下來爲大家演示如何去創建索引的映射信息
2. 索引映射
創建映射可以在索引剛創建的時候創建,也可以在索引創建完了之後再接着去創建,並且創建完了之後可以不停的追加映射,但是不能修改原有的映射
增加映射
POST http://127.0.0.1:9200/index_test/_mapping
請求參數
{
"properties": {
"id": {
"type": "long"
},
"realname": {
"type": "text"
},
"sex": {
"type": "integer"
},
"username": {
"type": "keyword"
}
}
}
{
"acknowledged": true
}
獲取映射信息
調用接口可以看到剛纔增加的映射信息
GET http://127.0.0.1:9200/index_test/_mapping
{
"index_text": {
"mappings": {
"properties": {
"id": {
"type": "long"
},
"realname": {
"type": "text"
},
"sex": {
"type": "integer"
},
"username": {
"type": "keyword"
}
}
}
}
}
現在我們再看看索引的信息,就會發現mappings中多出了我們剛纔創建的映射信息
{
"index_test": {
"aliases": {},
"mappings": {
"properties": {
"id": {
"type": "long"
},
"realname": {
"type": "text"
},
"sex": {
"type": "integer"
},
"username": {
"type": "keyword"
}
}
},
"settings": {
"index": {
"creation_date": "1593700632935",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "8VtndTrDSpC_iTfz4Q6otg",
"version": {
"created": "7080099"
},
"provided_name": "index_test"
}
}
}
}
如果希望追加映射可以使用POST請求和剛纔增加索引映射調用的接口是一樣的,但是映射是不能直接被刪除的,只能刪除索引