我在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
}
}
}
得到結果:
再次用原來的語句查詢,則成功得到結果: