elasticsearch的基本操作之索引和映射

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請求和剛纔增加索引映射調用的接口是一樣的,但是映射是不能直接被刪除的,只能刪除索引

 

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