Elasticsearch从映射中删除“一级”

时间:2016-01-19 14:42:24

标签: elasticsearch

我需要破坏索引映射。

我的索引具有以下映射

  "A": {
    "properties": {
      "B": { 
        "properties": {
             -c
             -d
             -e
         }
      }
    }
  }

我需要删除“一级”以获得这样的映射:

 "A": {
    "properties": {
            -c
            -d
            -e
      }
 }         

是否可以在不重新索引我的所有数据的情况下获得此结果?

2 个答案:

答案 0 :(得分:2)

简短回答,否。

更长的答案,也没有。这个问题已被问过很多次了。答案永远是否定的,这就是原因:

  

您只能找到存储在索引中的内容。为了使您的数据可搜索,您的数据库需要知道每个字段包含的数据类型以及应如何编制索引。如果您切换字段类型,例如日期的字符串,您已编入索引的该字段的所有数据都变得无用。无论如何,您需要重新索引该字段。

     

这不仅适用于Elasticsearch,也适用于使用索引进行搜索的任何数据库。如果它不使用索引,则会牺牲灵活性的速度。

     

Elasticsearch(和Lucene)将其索引存储在不可变段中 - 每个段都是“迷你"倒指数。这些细分市场永远不会更新。更新文档实际上会创建一个新文档,并将旧文档标记为已删除。在添加更多文档(或更新现有文档)时,会创建新段。合并过程在后台运行,将几个较小的段合并为一个新的大段,之后将完全删除旧段。

     

通常,Elasticsearch中的索引将包含不同类型的文档。每个_type都有自己的架构或映射。单个细分可能包含任何类型的文档。因此,如果要更改单个类型中单个字段的字段定义,则只能重新索引索引中的所有文档。

如果您对更多信息感兴趣,可以阅读Clinton Gormley的其余摘录here

我还建议如下:

答案 1 :(得分:1)

您必须使用更新的(一级删除)映射创建新索引。您无法更新相同的映射以实现您想要的效果。