Elasticsearch 創建以及修改索引結構


從問題出發,這篇內容可以解決以下幾個問題:

一:如何開啟關閉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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM