es之索引别名的使用别名有什么 在开发中,随着业务需求的迭代,较的业务逻辑就要临更新甚是重构,对于es来说,为了适应新的业务逻辑,可能就要对原有的索引做些修改,如对某些字段做调整,甚是重建索引。做这些操作的时候,可能会对业务造成影响,甚是停机调整等问题。由此,es提供了索引别名来解决这些问题。索引别名就像个快捷式或是软连接,可以指向个或多个索引,也可以给任意个需要索引名的API来使。别名的应为程序提供了极地灵活性查询别名GETnbaaliasGETalias新增别名POSTaliases{actions:〔{add:{index:nba,alias:nbav1。0}}〕}PUTnbaaliasnbav1。1删除别名POSTaliases{actions:〔{remove:{index:nba,alias:nbav1。0}}〕}DELETEnbaaliasnbav1。1重命名POSTaliases{actions:〔{remove:{index:nba,alias:nbav1。0}},{add:{index:nba,alias:nbav2。0}}〕}为多个索引指定个别名POSTaliases{actions:〔{add:{index:nba,alias:nationalplayer}},{add:{index:wnba,alias:nationalplayer}}〕}为同个索引指定多个别名POSTaliases{actions:〔{add:{index:nba,alias:nbav2。1}},{add:{index:nba,alias:nbav2。2}}〕}通过别名读索引 当别名指定了个索引,则查出个索引GETnbav2。1 当别名指定了多个索引,则查出多个索引GETnationalplayer通过别名写索引 当别名指定了个索引,则可以做写的操作POSTnbav2。1doc566{countryEn:Croatia,teamName:快船,birthDay:858661200000,country:克罗地亚,teamCityEn:LA,code:ivicazubac,displayAffiliation:Croatia,displayName:伊维察祖巴茨哥哥,schoolType:,teamConference:部,teamConferenceEn:Western,weight:108。9公,teamCity:洛杉矶,playYear:3,jerseyNo:40,teamNameEn:Clippers,draft:2016,displayNameEn:IvicaZubac,heightValue:2。16,birthDayStr:19970318,position:中锋,age:22,playerId:1627826} 当别名指定了多个索引,可以指定写某个索引POSTaliases{actions:〔{add:{index:nba,alias:nationalplayer,iswriteindex:true}},{add:{index:wnba,alias:nationalplayer}}〕}POSTnationalplayerdoc566{countryEn:Croatia,teamName:快船,birthDay:858661200000,country:克罗地亚,teamCityEn:LA,code:ivicazubac,displayAffiliation:Croatia,displayName:伊维察祖巴茨妹妹,schoolType:,teamConference:部,teamConferenceEn:Western,weight:108。9公,teamCity:洛杉矶,playYear:3,jerseyNo:40,teamNameEn:Clippers,draft:2016,displayNameEn:IvicaZubac,heightValue:2。16,birthDayStr:19970318,position:中锋,age:22,playerId:1627826} es之如何重建索引 背景 Elasticsearch是个实时的分布式搜索引擎,为户提供搜索服务,当我们决定存储某种数据时,在创建索引的时候需要将数据结构完整确定下来,于此同时索引的设定和很多固定配置将不能改变。当需要改变数据结构时,就需要重新建索引,为此,Elastic团队提供了很多辅助具帮助开发员进重建索引。 步骤nba取个别名nbalatest,nbalatest作为对外使新增个索引nba20220101,结构复制于nba索引,根据业务要求修改字段将nba数据同步到nba20220101给nba20220101添加别名nbalatest,删除nba别名nbalatest删除nba索引 我们对外提供访问nba索引时使的是nbalatest别名 1。新增个索引(如修改字段类型,jerseyNo改成keyword类型)PUTnba20220101{mappings:{properties:{age:{type:integer},birthDay:{type:date},birthDayStr:{type:keyword},code:{type:text},country:{type:keyword},countryEn:{type:keyword},displayAffiliation:{type:text},displayName:{type:text},displayNameEn:{type:text},draft:{type:long},heightValue:{type:float},jerseyNo:{type:keyword},playYear:{type:long},playerId:{type:keyword},position:{type:text},schoolType:{type:text},teamCity:{type:text},teamCityEn:{type:text},teamConference:{type:keyword},teamConferenceEn:{type:keyword},teamName:{type:keyword},teamNameEn:{type:keyword},weight:{type:text}}}} 2。将旧索引数据copy到新索引 同步等待,接将会在reindex结束后返回POSTreindex{source:{index:nba},dest:{index:nba20220101}} 异步执,如果reindex时间过,建议加上waitforcompletionfalse的参数条件,这样reindex将直接返回taskIdPOSTreindex?waitforcompletionfalse{source:{index:nba},dest:{index:nba20220101}} 3。替换别名POSTaliases{actions:〔{add:{index:nba20220101,alias:nbalatest}},{remove:{index:nba,alias:nbalatest}}〕} 4。删除旧索引DELETEnba 5。通过别名访问新索引POSTnbalatestsearch{query:{match:{displayNameEn:james}}} es之refresh操作 理想的搜索: 新的数据添加到索引中就能搜索到,但是真实情况不是这样的。我们使链式命令请求,先添加个档,再刻搜索curlXPUTlocalhost:9200stardoc888HContentType:applicationjsond{displayName:蔡徐坤}curlXGETlocalhost:9200stardocsearch?pretty 强制刷新curlXPUTlocalhost:9200stardoc666?refreshHContentType:applicationjsond{displayName:杨超越}curlXGETlocalhost:9200stardocsearch?pretty 修改默认更新时间(默认时间是1s)PUTstarsettings{index:{refreshinterval:5s}} 将refresh关闭PUTstarsettings{index:{refreshinterval:1}} es之高亮查询 前 如果返回的结果集中很多符合条件的结果,那怎么能眼就能看到我们想要的那个结果呢?如下站所示的那样,我们搜索d课堂,在结果集中,将所有d课堂亮显示? 高亮查询POSTnbalatestsearch{query:{match:{displayNameEn:james}},highlight:{fields:{displayNameEn:{}}}} 自定义高亮查询POSTnbalatestsearch{query:{match:{displayNameEn:james}},highlight:{fields:{displayNameEn:{pretags:〔h1〕,posttags:〔h1〕}}}} es之查询建议 查询建议是什么查询建议,是为了给户提供更好的搜索体验。包括:词条检查,动补全。词条检查 动补全 SuggesterTermsuggesterPhrasesuggesterCompletionsuggester 字段 Termsuggester term词条建议器,对给输的本进分词,为每个分词提供词项建议POSTnbalatestsearch{suggest:{mysuggestion:{text:jamsehardne,term:{suggestmode:missing,field:displayNameEn}}}} Phrasesuggester phrase短语建议,在term的基础上,会考量多个term之间的关系,如是否同时出现在索引的原,相邻程度,以及词频等POSTnbalatestsearch{suggest:{mysuggestion:{text:jamseharden,phrase:{field:displayNameEn}}}} Completionsuggester Completion完成建议POSTnbalatestsearch{suggest:{mysuggestion:{text:Miam,completion:{field:teamCityEn}}}}