Elasticsearch:如何在不删除整个索引的情况下删除映射类型?

时间:2016-02-11 21:53:57

标签: elasticsearch

是否可以从索引中删除单个映射类型而不删除整个索引? https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-mapping.html说这不可能,但我觉得很难相信。任何人都可以解释为什么功能被删除?看起来像基本的东西。

我有一个包含两个映射的索引。我希望能够删除一种映射类型(以及该类型的所有文档),而不删除其他映射类型。

由于

4 个答案:

答案 0 :(得分:4)

可以在elasticsearch issue : 8877中找到删除类型/映射的潜在问题示例以及禁用解释。 从问题描述中提取:

  

目前,用户可以完全删除类型,删除类型,   该类型的所有文档,并删除关联的字段。   不幸的是,如果已经有任何类型的文件   索引,然后字段是索引的一部分。添加字段   相同的名称,但不同的数据类型将导致以后的冲突。

目前reindex是唯一的选择,但是为了缓解客户端重建索引的问题,似乎未来可能有可能支持reindex api:  有关详细信息,请参阅issue:16207issue:#15201

答案 1 :(得分:3)

为了回答你的问题,我认为当映射在群集中传输时,它的可靠性和性能优化都被淘汰了。

在ES索引中很难改变任何内容的原因是因为底层存储是一个反向索引,并且您放入的任何数据都已经使用这些映射规则编入索引。

Elasticsearch降低了进入搜索的门槛,但却有一些非常复杂的内容。

答案 2 :(得分:1)

对于ES的最新版本(2.0以上),不再可以删除类型的映射。相反,您应该删除索引并使用新映射重新创建它。有关详细信息,请参阅official document here。 对于弹性搜索的旧版本(低于2.0),允许删除映射(类型)及其数据。 REST端点是

[DELETE] /{index}/{type}

[DELETE] /{index}/{type}/_mapping

[DELETE] /{index}/_mapping/{type}

答案 3 :(得分:0)

我知道这真是令人讨厌

但这就是为什么我们有别名

查询时我们会使用它们

在建立索引的同时,您可以创建一个index_2,放置新的映射,并使用批处理方法完全填充它

然后将别名从index_1更改为index_2