【问题标题】:Elasticsearch Delete Mapping PropertyElasticsearch 删除映射属性
【发布时间】:2013-04-15 21:54:49
【问题描述】:

我正在尝试找出一种方法来删除弹性搜索索引中特定属性的所有条目并删除该属性的所有类型映射。

我一直在查看以下两个文档页面:put mappingdelete mapping

来自第二个链接:

“允许删除映射(类型)及其数据。REST 端点是 /{index}/{type} 和 DELETE 方法。”

我认为我需要的是/{index}/{type}/{property}

我是否需要重新创建整个索引来完成此操作,即在类型之间移动和操作数据?

例如,在映射上调用 GET:

curl -XGET 'http://.../some_index/some_type/_mapping'

结果:

{
  "some_type": {
    "properties": {
      "propVal1": {
        "type": "double",
        "index": "analyzed"
      },
      "propVal2": {
        "type": "string",
        "analyzer": "keyword"
      },
      "propVal3": {
        "type": "string",
        "analyzer": "keyword"
      }
    }
  }
}

propVal3 上的删除操作将返回:

curl -XGET 'http://.../some_index/some_type/_mapping'

结果:

{
  "some_type": {
    "properties": {
      "propVal1": {
        "type": "double",
        "index": "analyzed"
      },
      "propVal2": {
        "type": "string",
        "analyzer": "keyword"
      }
    }
  }
}

propVal3 的所有数据都将通过索引删除。

【问题讨论】:

    标签: json rest lucene elasticsearch


    【解决方案1】:

    你不能那样做。只是忘记这个值存在...... ;-) 如果您确实需要删除它,则必须重新索引您的文档。

    【讨论】:

    • 感谢您的回复。我觉得我需要这样做。通过“重新索引”执行此操作的最佳策略是什么?我意识到这将是一场性能噩梦……但是您会采取什么策略呢?移动到另一种类型(正在删除正在处理的属性)并再次返回是一种选择吗?
    • 对这个问题创建了一个跟进:stackoverflow.com/questions/16159902/…
    • 为什么文档说它是可能的?还是我误会了?
    • 您能否提供我们所说的文档的链接?
    【解决方案2】:

    您可以为此使用新的_reindex api,甚至可以在运行重新索引之前将新的_mapping 放入目标索引,这样您就可以更改索引中字段的属性。

    要重新索引并删除属性,您可以这样做:

    POST /_reindex
    {
      "source": {
        "index": "twitter"
      },
      "dest": {
        "index": "new_twitter",
      },
      "script": {
        "inline": "ctx._source.remove('whatever')"
      }
    }
    

    如果您将它与_aliases API 结合使用,您可以修改索引而无需任何“停机时间”

    【讨论】:

    • 这个答案花了我一段时间才找到。但这是我能够完全删除弹性中的空值字段的唯一方法。谢谢。
    【解决方案3】:

    目前无法从映射中删除属性。为了从所有记录中删除某个属性的所有值,您需要重新索引删除该属性的所有记录。

    【讨论】:

    • @TheRedPea 使用 reindex API 例如或可用于弹性搜索的许多重新索引脚本之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2015-09-01
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多