ElasticSearch随着数据愈来愈大,查询时间也愈来愈慢,把全部数据放入同一个索引将不是一个好的方法。优化
因此优化时,将其按照必定规则从新reindex将提升很多效率code
好比将index_name
从新索引为index_name-yyyy-MM-dd
根据字段created_at
,原日期格式是"yyyy-MM-dd'T'HH:mm:ss
,计算得出yyyy-MM-dd
orm
inline中是 是类Java代码, 能够复制出来后本身编写
POST _reindex?wait_for_completion=false { "source": { "index": "index_name" }, "dest": { "index": "index_name-" }, "script": { "inline": "def sf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\");def o = new SimpleDateFormat(\"yyyy-MM-dd\");def dt = sf.parse(ctx._source.created_at);ctx._index='index_name-' + o.format(dt);" } }
好比根据ID / 10000000
取整,也就是1千万数据放一个index索引
POST _reindex?wait_for_completion=false { "source": { "index": "index_name" }, "dest": { "index": "index_name-" }, "script": { "inline": "ctx._index='index_name-' + Long.valueOf(ctx._source.id / 10000000).toString();" } }