Elasticsearch 无法按带有关键字的文本字段排序

问题描述 投票:0回答:1

尝试对结果进行排序

GET /books/_search
{
  "sort": [
      {"name": "asc"}
  ]
}

但出现错误:

[书籍] 中的 [名称] 的字段数据已禁用。文本字段未针对需要每个文档字段数据的操作(例如聚合和排序)进行优化,因此默认情况下禁用这些操作。请改用关键字字段。

当然,所以他们建议使用关键字字段。但是,据我了解,我确实有

keyword
字段:

> GET /books/_mapping/

   {
    "books": {
     "mappings": {
       "properties": {
         ...
         "name": {
           "type": "text",
           "fields": {
             "keyword": {
               "type": "keyword",
               "ignore_above": 256
             }
           }
         },

我做错了什么?

elasticsearch querying
1个回答
0
投票

尽管您已经根据共享的映射定义了

keyword
字段,但 Elasticsearch 似乎正在尝试使用
text
字段进行排序。当您执行排序操作时,您需要显式指定
keyword
字段,如下所示:

GET /books/_search
{
  "sort": [
    { "name.keyword": "asc" }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.