如何定期去清理ES集群的数据
文|洪生鹏
作为一名程序员,求职面试时,不知道你有没有遇到这样的面试题。
如何定期去清理ES集群的数据?
张工是一名java程序员,有两年大数据开发经验,最近到某知名互联网公司面试,面试官就问了他这样的一个问题:
如何定期去清理ES集群的数据以保证集群处在一个最佳负载状态?
张工:编写shell脚本定时删除索引就好了。
面试官:如果是删除具体某个索引的数据,又该怎么操作?
由于张工平时没有做到这块,这个问题就答不出个所以然来。
一般需要定期删除ES集群某个索引的历史数据,很有可能是前期设计时考虑不够全面。
随着业务的不断发展,单个索引的数据量将越来越大,索引又不能变更,如果没有定期清理数据,会导致查询速度越来越慢,严重影响用户体验。
如何定期去清理ES集群的数据?
对于这个问题,如果是删除这个索引这个比较好办,直接删除索引(Delete Index)就可以了 ,但要是遇到是删除具体某个索引的部分数据,又该怎么操作。
我们今天来介绍一种比较常见的做法。通过Delete By Query的方式去删除索引中的数据。
这个API的功能是根据特定的查询条件对ES相关索引中某些特定的文档进行批量删除。
下面我们来看看这个API的基本用法。
_delete_by_query会删除所有que