GET /emp/_search {"sort":[{"nickname":{"order":"desc"}}]} # 报错信息如下: { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [nickname] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "emp", "node": "CKN5Zo86QTmwjnK7NHHNQQ", "reason": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [nickname] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } ], "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [nickname] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.", "caused_by": { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [nickname] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } } }, "status": 400 }
按照如下方式在构建text类型时,设置
fielddata=true
即可进行排序。
PUT /emp_fielddata/ { "mappings": { "_doc": { "properties": { "nickname": { "type": "text", "fielddata": true } } } } } POST /emp_fielddata/_doc/_bulk {"index":{"_id":"1"}} {"nickname":"zhang san"} {"index":{"_id":"2"}} {"nickname":"zhang san feng"} {"index":{"_id":"3"}} {"nickname":"zhang san bu feng"} GET /emp_fielddata/_search {"sort":[{"nickname":{"order":"desc"}}]}
Fielddata is disabled on text fields by default. Set fielddata=true on [nickname] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.
# age字段关闭了doc_values PUT /emp_doc_values/ {"mappings":{"_doc":{"properties":{"name":{"type":"keyword"},"age":{"type":"integer","doc_values":false},"nick_name":{"type":"text"}}}}} POST /emp_doc_values/_doc/_bulk {"index":{"_id":"1"}} {"nickname":"zhang san","name":"zhang san","age":28} {"index":{"_id":"2"}} {"nickname":"zhang san feng","name":"zhang san feng","age":88} {"index":{"_id":"3"}} {"nickname":"zhang san bu feng","name":"zhang san bu feng","age":8} # name可排序 GET /emp_doc_values/_search {"sort":[{"name":{"order":"desc"}}]} # age字段由于关闭了doc_values,因此无法排序 GET /emp_doc_values/_search {"sort":[{"age":{"order":"desc"}}]} # nickname本身就是text字段,因此也无法排序 GET /emp_doc_values/_search {"sort":[{"nickname":{"order":"desc"}}]}