ElasticSearch 按照必定規則分割index

ElasticSearch隨着數據愈來愈大,查詢時間也愈來愈慢,把全部數據放入同一個索引將不是一個好的方法。優化

因此優化時,將其按照必定規則從新reindex將提升很多效率code

按照某字段的日期

好比將index_name從新索引爲index_name-yyyy-MM-dd
根據字段created_at,原日期格式是"yyyy-MM-dd'T'HH:mm:ss,計算得出yyyy-MM-ddorm

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範圍

好比根據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();"
  }
}
相關文章
相關標籤/搜索