尝试对结果进行排序
GET /books/_search
{
"sort": [
{"name": "asc"}
]
}
但出现错误:
[书籍] 中的 [名称] 的字段数据已禁用。文本字段未针对需要每个文档字段数据的操作(例如聚合和排序)进行优化,因此默认情况下禁用这些操作。请改用关键字字段。
当然,所以他们建议使用关键字字段。但是,据我了解,我确实有
keyword
字段:
> GET /books/_mapping/
{
"books": {
"mappings": {
"properties": {
...
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
我做错了什么?
尽管您已经根据共享的映射定义了
keyword
字段,但 Elasticsearch 似乎正在尝试使用 text
字段进行排序。当您执行排序操作时,您需要显式指定 keyword
字段,如下所示:
GET /books/_search
{
"sort": [
{ "name.keyword": "asc" }
]
}