什么是search template
顧名思義耿戚,查詢模版,就是提前設定好查詢的DSL阿趁,再次查詢時膜蛔,只需要指定對應的模版,然后傳入相應的參數就好脖阵。一是可以每次不用構建復雜的DSL皂股,二是可以供開發(fā)直接使用查詢DSL模版,減少學習和對接成本命黔。
有如下兩種方法
一呜呐、創(chuàng)建腳本_script/template,然后使用此模版
#創(chuàng)建腳本
POST _scripts/mytemplate
{
"script":{
"lang": "mustache",
"source": {
"query": {
"term": {
"{{key}}":"{{query_string}}"
}
}
}
}
}
#對某個索引使用腳本
GET movies/_search/template
{
"id":"mytemplate",
"params": {
"key":"title",
"query_string":"love"
}
}
二、在es安裝目錄config/scripts文件夾下悍募,添加.mustache文件
{
"query":{
"match": {
"{{match_field}}":"{{match_value}}"
}
},
"post_filter":{
{{#isCondition}}
"range":{
"{{range_field}}":{
{{#start}}
"gte":{{start}}
{{#end}},{{/end}}
{{/start}}
{{#end}}
"lte":{{end}}
{{/end}}
}
}
{{/isCondition}}
}
}
}
查詢語句:
GET book/book/_search/template
{
"file":"match_condition",
"params": {
"match_field":"bookAuthor",
"match_value":"陳寅恪",
"isCondition":true,
"range_field":"bookPrice",
"start":10,
"end": 10
}
}
什么是alias
alias是別名對意思蘑辑,對一個索引建立別名
- 可以幫助運維實現零停機情況下重建索引
- 可以過濾一些索引的數據
- 可以指向多個索引(只能查,不能修改新增等操作)
PUT /my_index_name/_alias/alias_name
如何實現零停機呢更換索引呢
- 首先保證要重建的索引是有別名的坠宴,并且其他業(yè)務方是使用這個alias來獲取數據的
- 新建一個索引洋魂,將老索引的數據添加到新增的索引上
- 把老索引的別名刪除,再給新增的索引添加老索引的別名
POST /_aliases
{
"actions": [
{ "remove": { "index": "my_index_name_v1", "alias": "alias_name" }},
{ "add": { "index": "my_index__name_v2", "alias": "alias_name" }}
]
}