Elasticsearch未找到排序依据字段的Map

0qx6xfy6  于 2023-01-01  发布在  ElasticSearch
关注(0)|答案(5)|浏览(163)

未找到字段的Map,无法按[created_at]排序
这个消息实际上意味着什么?字段本身created_at存在,我应该重建索引吗?或者有办法修复这个error吗?
更新日期:

{
   "query":{
      "bool":{
         "must":{
            "multi_match":{
               "query":"phone",
               "fields":[
                  "text"
               ],
               "minimum_should_match":"100%"
            }
         },
         "filter":{

         }
      }
   },
   "sort":[
      {
         "created_at":{
            "order":"desc"
         }
      }
   ]
}
avkwfej4

avkwfej41#

我在日期字段上也遇到了同样的问题。问题是created_at字段没有正确Map。
我们可以用两种方法解决这个问题
1.将created_at字段与"type": "date"正确Map
1.我们可以指定在排序部分没有找到Map时考虑的字段类型,如下所示

{
    "sort": [
        {
            "created_at": {
                "order": "desc",
                "unmapped_type": "date"
            }
        }
    ]
}

希望这对你有帮助。

t9aqgxwy

t9aqgxwy2#

如果此字段的数据为空,也可能是。
这对我很有帮助,因为我曾经在空数据中使用搜索,而Elastic抛出了这个异常。在我用Data实现后,一切都开始正常工作。

xmjla07d

xmjla07d3#

这是因为你的日期时间文件命名**created_at**是不是正确地Map在你的索引这是原因你只是有那字段作为一个字符串并且你不能排序在那字段你需要把Map第一前索引数据. for further read about mappings并且你怎样可以创建一个template为那到自动创建Map为你.
对于sorting,这将对您有所帮助。

xienkqul

xienkqul4#

对我有效的是,我创建了一个带有索引Map的字段,该字段缺失,并且没有推送任何数据,因此消除了碎片失败错误。

ewm0tg9j

ewm0tg9j5#

对我来说,我是通过Postman查询Elasticsearch的,我知道这个字段存在,并且正在为所有文档填充,但我仍然看到No mapping found for field in order to sort on [<my_field>]
原来,我在发出的GET请求中有一个额外的/。删除冗余的/修复了这个问题。

相关问题