目录
导读:本文重点描述了索引别名的使用和索引需要重建的步骤
一、索引别名的使用
别名的作用:在开发中,一般随着业务需求的迭代,较老的业务逻辑就要面临更新甚至是重构,对于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的这种功能得以补全提示。