【问题标题】:Getting illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default elastic search获取非法参数异常”,“原因”:“默认情况下,弹性搜索在文本字段上禁用字段数据
【发布时间】:2022-01-21 23:47:07
【问题描述】:

当我尝试运行以下来自邮递员的查询时,我收到了这个查询

{ "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "默认情况下,文本字段上的字段数据是禁用的。设置 [ID] 上的 fielddata=true 以便通过以下方式将 fielddata 加载到内存中 反转倒排索引。请注意,这可以使用 显着的记忆。或者改用关键字字段。” }

这是请求

{

    "size": 11,

    "query": {

        "bool": {

            "filter": [

                {

                    "bool": {

                        "must": [

                            {

                                "term": {

                                    "search.doc.TypeId": {

                                        "value": 1,

                                        "boost": 1.0

                                    }

                                }

                            }

                        ],

                        "adjust_negative": true,

                        "boost": 1.0

                    }

                }

            ],

            "adjust_negative": true,

            "boost": 1.0

        }

    },

    "sort": [

        {

            "ID": {

                "order": "desc"

            }

        }

    ]

}

【问题讨论】:

    标签: elasticsearch postman


    【解决方案1】:

    根据错误,objectID 字段似乎属于text 类型。默认情况下,文本字段上的字段数据是禁用的。

    所以,根据错误,首先,你需要修改你的索引映射,让文本字段启用字段数据。修改你的索引映射,如下图

    PUT <index-name>/_mapping
    {
      "properties": {
        "objectID": {
          "type": "text",
          "fielddata": true
        }
      }
    }
    

    现在使用问题中给出的相同搜索查询,以获得所需的结果。

    【讨论】:

    • 能不能先查一下type字段数据查询是什么?
    • 是的,如果键类型,我可以看到类型
    • 那么我们必须重新索引还是我们可以单独更改类型?
    • @Anupam 你可以只更新索引映射,不需要重新索引数据
    • 哦,如果可以做到,那就太好了,但我该怎么做呢?我会为此提出不同的问题,谢谢
    猜你喜欢
    • 2018-03-08
    • 2023-03-30
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多