【问题标题】:How to delete a field mapping in elastic search如何在弹性搜索中删除字段映射
【发布时间】:2015-05-06 09:49:23
【问题描述】:

我有一个带有以下映射的索引

{
   "testmap": {
      "mappings": {
         "user": {
            "properties": {
               "plans": {
                  "type": "nested",
                  "properties": {
                     "user": {
                        "type": "long"
                     }
                  }
               },
               "status": {
                  "type": "integer"
               }
            }
         }
      }
   }
}

我想删除状态字段映射。我不介意丢失该领域的数据。有没有删除状态字段的选项。 尝试过

curl -XDELETE http://192.168.2.2:9200/testmap/user/status
{"found":false,"_index":"testmap","_type":"user","_id":"status","_version":1

非常感谢您的帮助。谢谢你。

【问题讨论】:

标签: elasticsearch mapping


【解决方案1】:

您无法从此映射中删除 status 字段。如果你真的需要摆脱这个字段,你必须创建另一个没有status 字段的映射并重新索引你的数据。看看这个answer

【讨论】:

    【解决方案2】:

    如果只需要更改状态字段上的映射类型,则不能将其删除,但可以将其更改为multi_field 类型,该类型为具有多个选项集的字段建立索引。

    旧数据不会被索引到新字段,但向前移动的索引请求会。在某些用例中,它是“删除索引并使用新映射创建新索引”的不错选择。

    https://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/mapping-multi-field-type.html

    【讨论】:

    • OP 不想用另一个替换 status 字段。因此multi_field 在这种情况下没有用。
    • 明白。但删除映射的动力往往是用不同的映射替换它。 multi_field 可以经常满足这种需求,而无需重新创建整个映射。
    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多