es-index操作


新建index

既可以通過post /index名  的形式先定義index,json串的內容可以是index定義包括,mapping,setting和alias等等 

也可以post  /index名/類型名  的形式在傳入文檔的時候自動定義index。json串就是文檔的內容,如果index名能夠匹配索引模板那么就會復用索引模板的定義,如果沒有就會采用es默認的類型定義,es一般會定義成string類型。

 

查看index定義

get  index名

 

刪除index

delete index名

 

查看index內容

post/get index名/type名/_search   json字符串可以是查詢字符串

 

index別名設置

post    index名/_alias/別名

 

index別名與index刪除和建立關聯

post   /_aliases  json字符串為下面的定義形式

{
"actions": [
{
"remove": {
"index": "test0713",
"alias": "alias0712"
},
"add": {
"index": "test0712",
"alias": "alias0712"
}
}
]
}

 

修改index設置

put   /index名/_setting    json字符串為設置的定義,例如索引的主分片的數目,最大查詢窗口等等,如果index名字為_all則表示當前所有的索引

 

映射操作

 mapping感覺是處理數據的方式和規則方面做一些限制,如某個字段的數據類型、默認值、分析器、是否被索引等等,這些都是映射里面可以設置的,其它就是處理es里面數據的一些使用規則設置也叫做映射,按着最優規則處理數據對性能提高很大,因此才需要建立映射,並且需要思考如何建立映射才能對性能更好?和建立表結構表關系數據庫三范式類似。

        在剛剛接觸es的時候很多資料教程都不會直接上來先建立mapping映射,都是從一些示例入手很容易理解,那時沒有建立映射es也是可以工作的,說明es很多地方都是有默認設置的,如果我們不設置字段類型那么將走默認類型。

 

  •         映射的新建、修改、刪除

 

       讓我們先來建一個library01的索引,然后再該索引上面添加映射,其它也可以在建立索引時同時初始化映射關系,先建后建都是一樣的。

如上面library01是我新建的索引,從右側可以看出來它的mapping映射是空值,我們並沒有建映射,在library01中新建映射 如

        已經為索引建立了映射,可以用上圖中get命令查看各種索引,可以從一個索引中查看某個或某幾個類型的映射,也可以查看集群中所有或指定類型索引,用起來還是很方便的。

        新建完還可以刪除映射,通過這些命令:

 

        最后就是更新操作了,其它更新操作還是比較麻煩的,es中想要給一個已經建好映射的索引改變映射結果,即使改變一個字段類型都是不支持的,需要重新建立索引以及映射結構,然后把以前的數據導入到新建的索引結構中去,完成改變映射結構的目的。

        步驟:

1.給已有的索引定一個別名,並指向該別名

2.新建一個新的索引,新的映射結構

3.將別名指向新的索引,取消舊的索引與別名之間的關聯

        通過這幾部即可達到重新改變映射結構的內容,例如我們想改變library01的映射中price字段的類型由現有的double變為integer類型。

 

        從上面圖中可以看出來price 類型已經是integer類型了,客戶端不需要知道變化也不需要停止es服務,在必要的時候可以使用這個方法。

 

索引模板

模板並不屬於某個具體的索引,它會對滿足索引模板正則表達式的索引名直接使用該模板定義,而不必對每個索引進行定義。

模板的過程包括“settings”,"template","mapping","aliases","order"這幾項的設置,其中order的作用在於規定模板的使用順序,如果一個index同時匹配多個模板,則以其中order值較大的為准。但是實際並不是這樣的,改變order大小會造成index模板的加載失敗和沖突,要特別小心。

模板由模板名和模板正則匹配表達式兩項,模板名只代表該模板定義的名字,模板正則表達式則用於匹配其適用的索引名稱。


免責聲明!

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



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