上一篇阐述了向ES迁移index的方式,这具体说明如何迁移
既然要迁移,就必须考虑对现有业务的影响。 为了避免对现有业务的影响,这里是ES别名 _aliases
别名简单地说,就像是代号。 例如,你是xxdgq (好久没碰过这个名字了吗~ )。 在你的公司里,你的代号叫开发。 我知道我叫开发,你就叫你。 有一天你跳槽,做测试,新人接替你之前的岗位,在那里又叫xxdgq,新来
ES的别名_aliases可以为旧的索引库old_index设置别名,如上所述。 例如,别名为index_query,无论是java程序、python还是其他程序,都为我并不关心谁是真的开发,我只需要找到开发而已,别名也是这个道理。 将旧索引库old_index中的数据导入到新索引库new_index中后,不就可以将旧索引库的别名移动到新索引库了吗? 无需变更程序的设定文件和代码。 方便吗
当然,细心的人在移动别名的过程中,可能会想一个问题,就是调查的库是不是错了。 哈哈,这个问题ES当然也在考虑。 我们可以同时删除和添加相同的别名。 此操作在ES上为只需要用这个别名 index_query 去查就行。 没有那个瞬间的切换问题。 平静的行人很放心~
什么,怎么用不太清楚? 好的,进入代码吧。 进入句子。
原子性
//给某个索引库取别名post/_ aliases { ' actions ' : [ { ' add ' : } ' index ' : ' old _ index ',并加上' alias ' _ aliases { ' actions ' : [ { ' remove ' 3360 ' index ' 3360 ' index _ query ' }//删除某个索引程序_ aliases { ' actions ' 3360 [ { ' remove ' 3360 ' index _ query ' },{ ' add ' : { ' index ' } }
searchsourcebuilderbuilder=newsearchsourcebuilder (; searchrequestrequest=new search request (index _ query ); builder.query (query builders.term query (' field1',' JAVA ' ) ); bilder.size(5000; request.source(builder; searchresponsesearch=resthighlevelclient.search (request,RequestOptions.DEFAULT );给ES索引库加别名: