Elasticsearch找不到用于按字段排序的映射

时间:2018-06-29 11:02:17

标签: elasticsearch

  

找不到要在[created_at]上排序的字段的映射

此消息的实际含义是什么?该字段本身created_at存在,我应该重建索引吗?还是有办法解决此error

已更新:

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

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

4 个答案:

答案 0 :(得分:2)

如果此字段的数据为空,也可能是

这对我有所帮助,因为我曾经在空数据中使用搜索,而Elastic抛出了此异常。当我完成数据工作后,一切都开始正常工作。

答案 1 :(得分:2)

我在日期字段方面遇到了同样的问题。 问题是 created_at 字段未正确映射。

我们可以通过两种方式解决这个问题

  1. 使用 created_at 的正确映射映射 "type": "date" 字段
  2. 当没有找到映射时,我们可以指定要考虑的字段类型 在排序部分如下

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

希望可以帮到你。

答案 2 :(得分:0)

这是因为您命名为 created_at 的日期时间未正确映射到索引中,这就是您仅将该字段作为字符串且无法对该字段进行排序的原因您需要先将映射放在索引数据之前。进一步了解mappings以及如何创建template来自动为您创建映射。

对于sorting,这将对您有所帮助。

答案 3 :(得分:0)

对我有用的是,我创建了带有索引映射的字段,该字段缺少该字段并且没有推送任何数据。因此,这消除了分片失败错误。