ElasticSearch模板和別名
單位現在的搜尋系統,每天凌晨,都會做一個全量更新.然後資料一天之內就不會變了...
以後引入準實時搜尋之後,為了保險起見,我可能還會保留凌晨的全量更新.
我大致會採用如下方式,
建立兩個索引songod_m1和songod_m2,和一個別名 songod
每天凌晨,全量更新備用的索引,完成之後,切換別名.週而復始.
準實時搜尋的功能,透過Canal將MySQL的變化,非同步更新到ES叢集.
這其中肯定有資料不一致的風險.但是我覺得可以接受.
建立模板.
提交模板.
[root@localhost/tmp]$curl -XPUT http://192.168.16.114:9200/_template/songod?pretty --data-binary @index.json
{
"acknowledged" : true
}
初始化資料,並建立別名
[root@localhost/tmp]$curl -XPOST http://192.168.16.114:9200/_aliases -d '
> {
> "actions": [
> {
> "add": {
> "index": "songod_m1",
> "alias": "songod"
> }
> }
> ]
> }
> '
凌晨時候,先查詢別名的實際指向。
[root@localhost/tmp]$curl http://192.168.16.114:9200/songod/_aliases?pretty
{
"songod_m1" : {
"aliases" : {
"songod" : { }
}
}
}
然後刪除 songod_m2 索引,再重建.
重建完成,更改別名.
[root@localhost/tmp]$curl -XPOST http://192.168.16.114:9200/_aliases -d '
{
"actions": [
{
"remove": {
"index": "songod_m1",
"alias": "songod"
},
"add": {
"index": "songod_m2",
"alias": "songod"
}
}
]
}
'
再次檢視別名,已經更改.
[root@localhost/tmp]$curl http://192.168.16.114:9200/songod/_aliases?pretty
{
"songod_m2" : {
"aliases" : {
"songod" : { }
}
}
}
[root@localhost/tmp]$
JAVA應用程式只需要引用 songod別名即可.
以後引入準實時搜尋之後,為了保險起見,我可能還會保留凌晨的全量更新.
我大致會採用如下方式,
建立兩個索引songod_m1和songod_m2,和一個別名 songod
每天凌晨,全量更新備用的索引,完成之後,切換別名.週而復始.
準實時搜尋的功能,透過Canal將MySQL的變化,非同步更新到ES叢集.
這其中肯定有資料不一致的風險.但是我覺得可以接受.
建立模板.
- {
- "template": "songod*",
- "order": 1,
- "settings": {
- "index": {
- "index.number_of_replicas": 1,
- "number_of_shards": 5,
- "refresh_interval": "30s"
- }
- },
- "mappings": {
- "sod_song_ksc": {
- "dynamic_templates": [
- {
- "all_field": {
- "mapping": {
- "index": "no",
- "store": "yes",
- "type": "{dynamic_type}",
- "include_in_all": false
- },
- "match": "*"
- }
- }
- ],
- "_source": {
- "enabled": false
- },
- "_all": {
- "enabled": true,
- "analyzer": "ik"
- },
- "properties": {
- "SongID": {
- "type": "long",
- "store": "yes",
- "index": "not_analyzed",
- "include_in_all": true
- },
- "Name": {
- "type": "multi_field",
- "fields": {
- "Name": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "ik"
- },
- "raw": {
- "type": "string",
- "store": "yes",
- "index": "not_analyzed",
- "include_in_all": true
- }
- }
- },
- "SingerName": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "stop",
- "include_in_all": true
- }
- }
- }
- }
- }
提交模板.
[root@localhost/tmp]$curl -XPUT http://192.168.16.114:9200/_template/songod?pretty --data-binary @index.json
{
"acknowledged" : true
}
初始化資料,並建立別名
[root@localhost/tmp]$curl -XPOST http://192.168.16.114:9200/_aliases -d '
> {
> "actions": [
> {
> "add": {
> "index": "songod_m1",
> "alias": "songod"
> }
> }
> ]
> }
> '
凌晨時候,先查詢別名的實際指向。
[root@localhost/tmp]$curl http://192.168.16.114:9200/songod/_aliases?pretty
{
"songod_m1" : {
"aliases" : {
"songod" : { }
}
}
}
然後刪除 songod_m2 索引,再重建.
重建完成,更改別名.
[root@localhost/tmp]$curl -XPOST http://192.168.16.114:9200/_aliases -d '
{
"actions": [
{
"remove": {
"index": "songod_m1",
"alias": "songod"
},
"add": {
"index": "songod_m2",
"alias": "songod"
}
}
]
}
'
再次檢視別名,已經更改.
[root@localhost/tmp]$curl http://192.168.16.114:9200/songod/_aliases?pretty
{
"songod_m2" : {
"aliases" : {
"songod" : { }
}
}
}
[root@localhost/tmp]$
JAVA應用程式只需要引用 songod別名即可.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2104016/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Elasticsearch之索引模板index template與索引別名index aliasElasticsearch索引Index
- php: 操作elasticsearch的別名PHPElasticsearch
- 【Elasticsearch】Elasticsearch 索引模板Elasticsearch索引
- 聊聊elasticsearch7.8的模板和動態對映Elasticsearch
- 別名的使用和nullNull
- 檢視keystore別名和android簽名Android
- Elasticsearch第四篇:索引別名、新增或修改對映規則Elasticsearch索引
- elasticsearch的object型別和動態對映ElasticsearchObject型別
- oracle資料庫名和例項名的區別Oracle資料庫
- 識別主機名和IP地址
- 13-別名和程式碼引用
- 檔案型別和副檔名型別
- sql server 登入名和使用者名稱的區別和聯絡SQLServer
- vue-router 重定向和別名 理解Vue
- UTF-8 帶簽名和不帶簽名的區別
- c++11-17 模板核心知識(十五)—— 解析模板之依賴型型別名稱與typename Dependent Names of TypesC++型別
- git別名Git
- pbootcms模板首頁如何某個指定的欄目名稱和連結boot
- ElasticSearch _all和_sourceElasticsearch
- TypeScript type 型別別名TypeScript型別
- Python批量修改檔名和檔案型別Python型別
- C#名稱空間、型別的別名管理C#型別
- Oracle - 資料庫名、例項名、服務名、ORACLE_SID 的說明和區別Oracle資料庫
- Elasticsearch Mapping型別修改ElasticsearchAPP型別
- PbootCMS模板首頁如何呼叫某個指定的欄目名稱和連結boot
- SQL Server 別名(as)SQLServer
- [Git] 別名(alias)Git
- 『手撕Vue-CLI』拉取模板名稱Vue
- Elasticsearch 安裝和使用Elasticsearch
- ElasticSearch 中 match、match_phrase、query_string 和 term 的區別Elasticsearch
- [SQL]group by和order by是否能寫欄位別名SQL
- thawte程式碼簽名證書和Comodo程式碼簽名證書區別
- Elasticsearch 別管原理,先run起來Elasticsearch
- Elasticsearch資料型別及其屬性Elasticsearch資料型別
- elasticsearch之日期型別有點怪Elasticsearch型別
- 車牌識別字元模板庫字元
- 模板語法 if 與 with 的區別
- TypeScript 之模板字面量型別TypeScript型別