【问题标题】:ES index mapping has "query" parameterES 索引映射有“查询”参数
【发布时间】:2021-01-26 15:44:40
【问题描述】:

我的一个索引有这个映射:

"mappings": {
            "properties": {
                "count": {
                    "type": "integer"
                },
                "currency": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 16
                        }
                    }
                },
                "query": {
                    "properties": {
                        "match_all": {
                            "type": "object"
                        },
                        "range": {
                            "properties": {
                                "hour": {
                                    "properties": {
                                        "gte": {
                                            "type": "date"
                                        },
                                        "lt": {
                                            "type": "date"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

我不明白为什么会这样,所以我创建了一个新索引并确保其中没有这个 查询 绒毛。在确保新索引的映射没有问题后,我开始了重新索引过程,但过了一段时间,我再次注意到:

"mappings": {
            "properties": {
                "count": {
                    "type": "integer"
                },
                "currency": {
                    "type": "keyword",
                    "index_options": "freqs"
                },
                "query": {
                    "properties": {
                        "match_all": {
                            "type": "object"
                        }
                    }
                }
            }
        }

查询部分已更改,但它仍然存在,我不确定是什么导致它变成这样

【问题讨论】:

    标签: elasticsearch elasticsearch-mapping


    【解决方案1】:

    当您没有在映射中设置"dynamic": "strict" 时,您的映射将被允许通过索引新数据来传播。您已将查询部分作为数据插入到索引中。当您重新索引数据时,所有数据都将传输到新索引,您仍然可以看到该帖子和更改映射。如果没有这个,你需要在你的映射中设置"dynamic": "strict" 或者尽量不要索引这样的文档。

    【讨论】:

    • 谢谢。我可以试试,但我不明白为什么它首先出现
    • 设置dynamic为strict只会防止映射被修改,并不能解决源问题。
    • 比如你想通过kibana搜索一些东西。选择POST方式而不是GET方式,最后不插入_search,你说我要插入这样的数据,因为你没有严格的映射,所以会插入。
    • 啊,有道理。好的,但在我现在的情况下,我怎样才能摆脱这个。在新索引上使用 "dynamic": "strict" 然后从旧索引重新索引到新索引将解决此问题,对吗?
    • 是的,将 conflicts 设置为 proceed 以及在您的重新索引 API 调用中。
    【解决方案2】:

    这通常是将查询发布到与_search 端点不同的端点的结果。

    例如,如果您运行此程序,您将创建一个新文档并修改索引的映射

    POST index/_doc
    {
      "query": {
        "match_all": {}
      }
    }
    

    查询必须始终发送到_search 端点:

    POST index/_search
    {
      "query": {
        "match_all": {}
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2011-12-08
      • 2017-08-03
      • 2018-11-22
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多