從問題出發,這篇內容可以解決以下幾個問題:
一:如何開啟關閉Es索引(數據庫)?
二:如何創建索引(數據庫)結構?
三:如何向已有索引(數據庫)中添加類型(表)結構?
四:如何向已有類型(表)中添加新字段?
五:如何更改現有類型(表)中的字段類型?
六:如何刪除索引(數據庫)?
七:如何刪除索引中某一個類型結構(同時刪除數據以及數據結構)?
八:如何刪除索引中某一類型結構的全部數據而不刪除類型結構?
九:為什么同一索引下不同類型的結構如果字段名稱相同會報錯?
十:創建索引結構時注意事項以及問題?
一:如何開啟關閉Es索引(數據庫)?
關閉索引
POST /my_index/_close
開啟索引
POST /my_index/_open
二:如何創建索引(數據庫)結構?
PUT twitter { "mappings": { "tweet": { "properties": { "message": { "type": "text" } } } } }
三:如何向已有索引(數據庫)中添加類型(表)結構?
PUT twitter/_mapping/user { "properties": { "name": { "type": " keyword" } } }
四:如何向已有類型(表)中添加新字段?
PUT twitter/_mapping/tweet { "properties": { "user_name": { "type": " keyword" } } }
五:如何更改現有類型(表)中的字段類型?
無法更改;
六:如何刪除索引(數據庫)?
參考鏈接:https://www.cnblogs.com/Rawls/p/10110743.html
七:如何刪除索引中某一個類型結構(同時刪除數據以及數據結構)?
Elasticsearch不支持刪除一個Type;
參考鏈接:https://blog.csdn.net/youzhouliu/article/details/79940729
八:如何刪除索引中某一類型結構的全部數據而不刪除類型結構?
POST /testindex/testtype/_delete_by_query?pretty { "query": { "match_all": { } } }
九:為什么同一索引下不同類型的結構如果字段名稱相同會報錯?
這個問題比較坑,什么意思呢?用我們使用關系型數據庫的邏輯來說,就是同一個數據庫里面,如果有兩個不同的表,表里面都有name字段,
如果A表中name是varchar類型,B表中name是int類型,完了,這就沒辦法創建索引了。所以,我們在創建索引的時候要注意,為什么會有這樣的問題呢?
難道是Es的bug?這個主要是因為Es使用的是lucene的框架,具體的原因大家可以參考官方文檔 避免類型陷阱
十:創建索引結構時注意事項以及問題?
1: 明確字段存儲類型,是int類型還是文本類型;
ES字段類型參考:https://blog.csdn.net/chengyuqiang/article/details/79048800
2: 文本類型情況下,一種是keyword,一種是text ;
二者的區別請參考:https://www.cnblogs.com/Rawls/p/10069670.html
3: 字段結構類型一旦定義之后,是無法修改的,就跟你在數據庫中一樣,以前是int類型,
是無法改成varchar類型的(在sqlserver 表中沒有數據情況下可以修改)。
4: 如果需要修改結構類型,只能在在這個文檔類型中新增一個字段了。
5: 同一個索引下面,字段名稱盡量不要重復;
6: 字段名稱如果有重復情況,一定要使用相同的字段類型,要么都是integer,要么都是text。