elasticsearch 索引,更新,增量更新,不停機修改升級 ,簡單使用
阿新 • • 發佈:2018-11-21
elasticsearch 使用
對es瞭解的並不是太多,記錄簡單使用場景。若哪裡不對,還請大人指出
舉例: 根據商品名稱搜尋商品
- 建立索引
product_v1
為什麼要帶v1
呢,後面方便升級
#新增索引
put product_v1?pretty
#檢視一下
get _cat/indices?v
- 定義
map
,簡單設定,只定義id
與name
,還有updatetime
#設定map POST product_v1/_mapping/doc { "properties": { "name":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" }, "id":{ "type": "long" }, "updatetime": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss" } } } #檢視map GET /product_v1/_mapping/
- 新增別名,將
product_v1
設定為product
,後面就可以針對別名操作。設定別名最大的好處,是後期變更map
時很方便,開發時連線product
即可
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "product_v1", "alias" : "product" } }
]
}
- 新增一些索引隨便新增,日期就不寫了
PUT product/doc/1?pretty { "name":"網路紅外半球攝像機" } PUT product/doc/2?pretty { "name":"網路高清硬碟錄影機" } PUT product/doc/3?pretty { "name":"網路紅外高清中速球機" }
- 搜尋測試資料
GET product/_search
{
"query": {
"match": {
"name": "網路"
}
}
}
6.升級變更map
, 比如name
變更為productName
。 新增新欄位typeName
#1.建立新索引 put product_v2?pretty #2.設定新map POST product_v2/_mapping/doc { "properties": { "productName":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" }, "typeName":{ "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } ... ... } } #3.得新新增索引到`product_v2`, PUT product_v2/doc/1?pretty { "productName":"網路紅外半球攝像機", ... ... } #4.設定別名指向新索引,原索引自己決定是否刪除 POST /_aliases { "actions" : [ { "add" : { "index" : "product_v2", "alias" : "product" } } ] } #或者同時刪除掉原索引 POST /_aliases { "actions" : [ { "remove" : { "index" : "product_v1", "alias" : "product" } }, { "add" : { "index" : "product_v2", "alias" : "product" } } ] } #或者單獨刪除都可以 DELETE product_v1
7.升級變更map
, 比如欄位型別需要變更,如給typeName
新增一個keyword
的型別
#1.新建索引
put product_v3?pretty
#2.設定新`map`
POST product_v3/_mapping/doc
{
"properties": {
"typeName":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
...
...
}
}
#3.使用`reindex`得做索引
post _reindex
{
"source": {
"index": "product"
},
"dest": {
"index": "product_v2"
}
}
#4.將別名切到新索引,同上
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "product_v2", "alias" : "product" } }
]
}
...