是否可以从索引中删除单个映射类型而不删除整个索引? https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-mapping.html说这不可能,但我觉得很难相信。任何人都可以解释为什么功能被删除?看起来像基本的东西。
我有一个包含两个映射的索引。我希望能够删除一种映射类型(以及该类型的所有文档),而不删除其他映射类型。
由于
答案 0 :(得分:4)
可以在elasticsearch issue : 8877中找到删除类型/映射的潜在问题示例以及禁用解释。 从问题描述中提取:
目前,用户可以完全删除类型,删除类型, 该类型的所有文档,并删除关联的字段。 不幸的是,如果已经有任何类型的文件 索引,然后字段是索引的一部分。添加字段 相同的名称,但不同的数据类型将导致以后的冲突。
目前reindex是唯一的选择,但是为了缓解客户端重建索引的问题,似乎未来可能有可能支持reindex api: 有关详细信息,请参阅issue:16207和issue:#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