ES設置Fielddata實現聚合和排序

我在es中存了約50w條nginx日誌,想查詢出響應時間最長的幾個請求,按照下面的查詢語句,返回400:

GET /test1/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "milliseconds": {
        "order": "desc"
      }
    }
  ]
}

返回結果:

告訴我"Fielddata is disabled on text fields by default. Set fielddata=true on [milliseconds] in order to load fielddata in memory by uninverting the inverted index."意思是需要設置milliseconds字段的fielddata爲true。

解決辦法:

首先查詢索引信息:

GET /test1

得到結果:

milliseconds就在mappings>doc>properties下面,用下面的請求將fielddata設爲true:

PUT /test1/_mapping/doc/?pretty
{
  "properties":{
    "milliseconds":{
      "fielddata":true
    }
  }
}

得到結果:

再次用原來的語句查詢,則成功得到結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章