ElasticSearch之Search Template和Index Alias

写在前面

本文看下es的search template和index alias。

1:search template

用来定义模板查询语句,运行时只需要将要查询的内容作为参数传进来即可,如下:
在这里插入图片描述
接着来测试下,首先来定义数据:

DELETE tmdb/
PUT tmdb/

curl -H "Content-Type: application/json"  -XPOST "192.168.10.64:9210/tmdb/_bulk" --data-binary @javaio-appendfile1709014272558.json

javaio-appendfile1709014272558.json从这里 下载。
接着定义index template:

POST _scripts/tmdb
{
    "script": {
        "lang": "mustache",
        "source": {
            "_source": [
                "title",
                "overview"
            ]
        },
        "size": 20,
        "query": {
            "multi_match": {
                "query": "{{q}}",
                "fields": [
                    "title",
                    "overview"
                ]
            }
        }
    }
}

查询:

POST tmdb/_search/template
{
  "id": "tmdb",
  "params": {
    "q": "basketball with cartoon aliens"
  }
}

在这里插入图片描述

2:index alias

在这里插入图片描述

用来设置索引别名,查询时使用别名,在运行时可以动态修改别名所对应的真正的索引,这样可以做到不停机的更改查询的索引。考虑这样的场景,某个数据一天创建一个索引,如果是不使用index alias的话,则每天都要更改要查询的索引。

首先来准备数据:

POST day_20200301/_bulk
{"index": {"_id": 1}}
{"f1":"aa", "f2": "bb"}
{"index": {"_id": 2}}
{"f1":"aa", "f2": "bb"}
{"index": {"_id": 3}}
{"f1":"aa", "f2": "bb", "f3": "cc"}

有3条数据,接着定义index alias:

POST _aliases
{
    "actions": [
        {
            "add": {
                "index": "day_20200301",
                "alias": "day_data"
            }
        }
    ]
}

查询:
在这里插入图片描述
查出3条数据,假定又过了一天到了20200302,也生成对应的索引:

POST day_20200302/_bulk
{"index": {"_id": 1}}
{"f1":"aa", "f2": "bb"}

只有一条数据,再创建别名:

POST _aliases
{
    "actions": [
        {
            "add": {
                "index": "day_20200302",
                "alias": "day_data"
            }
        }
    ]
}

再基于别名查询:
在这里插入图片描述
结果竟然是4条,而不是1条,这是因为一个别名可以指向多个索引,如下图:
在这里插入图片描述
当然我们可以通过remove来解除别名和某个索引的绑定,如下解除day_data和day_20200301的绑定:

POST _aliases
{
    "actions": [
        {
            "remove": {
                "index": "day_20200301",
                "alias": "day_data"
            }
        }
    ]
}

在执行GET day_data/_count查询就是day_20200302这天生成的1条数据了:
在这里插入图片描述

写在后面

参考文章列表

ElasticSearch之找到乔丹的空中大灌篮电影

Elasticsearch-Alias别名的2个核心场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值