【问题标题】:How to delete document types in elasticsearch?如何删除elasticsearch中的文档类型?
【发布时间】:2019-04-29 18:32:50
【问题描述】:

我用指定的文档类型“mytype”创建了一个索引“myindex”。我可以删除索引,但似乎“mytype”仍然存在而没有与索引绑定。

如何摆脱“我的类型”?

【问题讨论】:

  • 如果删除索引,关联的类型也会被删除,没有索引就不能存在。是什么让你认为“mytype”仍然存在?
  • 在“head”插件中,我可以去“browser”看到“mytype”列在“types”下面
  • 很奇怪。映射属于类型,类型属于索引。如果您删除索引,您将全部丢失。您确定使用删除 API 删除了索引吗?
  • 是的,这很奇怪。您是否刷新了显示“head”插件的页面?有时需要查看正确的信息。
  • 我使用“概述”下可用的头应用程序中的“删除”选项删除了索引。我刚才刷新了一下,那些“老”和“孤儿”的类型还在……

标签: elasticsearch


【解决方案1】:

如果你真的删除了索引,那么这个索引中的映射应该不存在了。 您的集群中是否还有其他具有相似类型名称的索引?

要回答问题:How to delete document types in elasticsearch?,请使用Delete Mapping API

curl -XDELETE http://localhost:9200/index/type

编辑:从 elasticsearch 2.0 开始,这将不再可能。见Mapping changes。您必须安装Delete By Query plugin 并运行查询,这将删除您的文档,但映射仍然存在。因此,最好在另一个没有旧类型的索引中重新索引您的文档。

但正如@mguillemin 和@javanna 所说,当您删除索引时,附加到该索引的每个映射也会被删除:

curl -XDELETE http://localhost:9200/index

【讨论】:

  • 我可以通过 curl 和 sense 来做到这一点,但是我如何使用 python 客户端为 elasticsearch 删除一个类型,但是我可以使用 delete 函数删除一个类型中的一个文档。跨度>
  • 查询删除插件的链接应该是elastic.co/guide/en/elasticsearch/plugins/current/…
【解决方案2】:

您可以使用_delete_by_query路径删除类型。

POST index-name/type-name/_delete_by_query
{
    "query": { 
        "match": {
            "message": "some message"
        }
    }
}

更多阅读请看docs

【讨论】:

    【解决方案3】:

    在最新版本的弹性搜索中,它们不再支持删除文档类型。 documentation中提到过

    不再可能删除类型的映射。相反,你 应该删除索引并使用新的映射重新创建它。

    【讨论】:

      【解决方案4】:

      您甚至不需要指定请求正文。只是

      curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query
      

      【讨论】:

      • 删除文档但不删除映射。
      • 它不适用于版本 > 5.X。响应 { "error": { "root_cause": [ { "type": "exception", "reason": "_delete_by_query 需要请求正文" } ], "type": "exception", "reason": "_delete_by_query 需要请求正文" }, "状态": 500 }
      • ES版本为5.3.2
      猜你喜欢
      • 2013-10-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      相关资源
      最近更新 更多