新建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模板的加載失敗和沖突,要特別小心。
模板由模板名和模板正則匹配表達式兩項,模板名只代表該模板定義的名字,模板正則表達式則用於匹配其適用的索引名稱。