elasticsearch7.x 索引别名使用和重新建索引过程步骤

目录

一、索引别名的使用

 二、es如何重建索引

 三、es的refresh操作

四、es高亮查询

 五、es查询建议 自动补全

 5.1Term suggester 词条建议器

5.2 Phrase suggester 短语建议

 5.3 Completion suggester


导读:本文重点描述了索引别名的使用和索引需要重建的步骤

一、索引别名的使用

别名的作用:在开发中,一般随着业务需求的迭代,较老的业务逻辑就要面临更新甚至是重构,对于es来说为了适应新的业务逻辑,
就要对原有的索引做一些修改,比如对某些字段做调整。而做这些操作的时候,可能会对业务造成影响,甚至是停机调整等问题
因为es提供了索引的别名来解决这个问题。索引的别名就像一个快捷方式或者是软连接,可以指向一个或者多个索引,也可以给任意一个需要索引名的API来使用

新建索引nba

 查看nba的别名 默认是空的

 给nba索引 新增一个别名

POST /_aliases
{ "actions": [
 { "add": {
 "index": "nba",
 "alias": "nba_v1.0"
 } } ]}

 再查看下nba的别名

 删除别名

POST /_aliases { "actions": [ { "remove": { "index": "nba", "alias": "nba_v1.0" } } ] }

 给别名进行重命名,比如把nba的nba_v1.0 重命名重nba_v2.0

POST /_aliases { "actions": [ { "remove": { "index": "nba", "alias": "nba_v1.0" } }, { "add": { "index": "nba", "alias": "nba_v2.0" } } ] }

 也可以给多个索引,指定同一个别名

 为同个索引指定多个别名

POST /_aliases
{ "actions": [
 { "add": {
 "index": "nba",
 "alias": "nba_v2.1"
 } },
 { "add": {
 "index": "nba",
 "alias": "nba_v2.2"
 } } ]}

通过别名读索引

 通过别名写索引,当别名指定了索引,则可以做写的操作

 二、es如何重建索引

重建的背景:es是一个准实时的分布式搜索引擎,为用户提供搜索服务,当决定存储某种数据时,在创建索引的时候需要将数据结构完整确定下来,
于此同时索引的设定和很多固定配置将不能改变。当需要改变数据结构时,就需要重新建索引。

重建步骤
1.nba取一个别名nba_latest, nba_latest作为对外使用
2.新增一个索引nba_20220101,结构复制于nba索引,根据业务要求修改字段
3.将nba数据同步到nba_20220101
4.给nba_20220101添加别名nba_latest,删除nba别名nba_latest
5.删除nba索引

实操配图:

1.

 2.

 3.将旧索引数据copy到新索引 

同步等待,接口将会在 reindex 结束后返回

POST /_reindex
{
 "source": {
 "index": "nba"
 },
 "dest": {
 "index": "nba_20220101"
 }
}

异步执行,如果 reindex 时间过⻓,建议加上 wait_for_completion=false 的参数条件, 这样 reindex 将直接返回 taskId 

POST /_reindex?wait_for_completion=false { "source": { "index": "nba" }, "dest": { "index": "nba_20220101" } }

4.给nba_20220101添加别名nba_latest,删除nba别名nba_latest

 POST /_aliases { "actions": [ { "add": { "index": "nba_20220101", "alias": "nba_latest" } }, { "remove": { "index": "nba", "alias": "nba_latest" } } ] }

5.删除旧索引

 DELETE /nba

最后通过别名访问新索引

 三、es的refresh操作

理想的搜索:
新的数据一添加到索引中立马就能搜索到,但是真实情况不是这样的。
我们使用链式命令请求,先添加一个文档,再立刻搜索
curl -X PUT localhost:9200/star/_doc/888 -H 'Content-Type:
application/json' -d '{ "displayName": "蔡徐坤" }'
curl -X GET localhost:9200/star/_doc/_search?pretty

强制刷新

curl -X PUT localhost:9200/star/_doc/666?refresh -H 'Content-Type: application/json' -d '{ "displayName": "杨超越" }' curl -X GET localhost:9200/star/_doc/_search?pretty

修改默认更新时间 (1秒)

PUT /star/_settings { "index": { "refresh_interval": "5s" } } 

也可以将refresh关闭(不建议) 

PUT /star/_settings { "index": { "refresh_interval": "-1" } } 

四、es高亮查询

高亮的命中结果 默认使用<em></em> 

也可以自定义高亮查询

 五、es查询建议 自动补全

 5.1Term suggester 词条建议器

term 词条建议器,对给输入的文本进行分词,为每个分词提供词项建议

字段中 "displayNameEn": "Ivica Zubac" 只有这一个值。

会匹配出来文档当中,跟Iviac很接近的词 。missing模式仅再搜索词项再索引中不存在时候才提供建议词。默认值。

5.2 Phrase suggester 短语建议

phrase 短语建议,在term的基础上,会考量多个term之间的关系,比如是否同时出现在索
引的原文里,相邻程度,以及词频等

 5.3 Completion suggester

Completion 完成建议

通过只输入Miam 前面这四个单词,可以匹配出来整个。红框中的是识别出来 建议补全的。

 总结:以上几点主要是为了在使用过程中输入了错误的单词,通过es的这种功能得以补全提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值