当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch reindex忽略映射参数dynamic false

江鹏飞
2023-03-14

我正在尝试实现某种映射更改的迁移。所以我的问题是,如果由于某种原因,我的新映射不能与我当前的数据一起工作(例如,类型改变了),我想使用reindex。如果已删除某个字段,则执行以下操作:

  • 使用新映射创建新索引(其中不包括已删除的字段)
  • 在新创建的索引中重新索引我的当前索引
  • 删除旧索引并将别名设置为新索引

该类型的动态映射被设置为false,所以我认为当使用新映射将数据重新索引到新索引时,删除的字段将被忽略。所以我的问题是,字段只是被复制到新索引中,尽管没有为这个索引定义映射。正如文档(https://www.elastic.co/guide/en/elasticsearch/reference/5.2/dynamic.html)中所述,我认为没有任何映射的字段将被忽略。

另一方面,设置为strict的动态映射将失败。

是我错过了什么还是有更好的方法来做这件事?

共有1个答案

顾跃
2023-03-14

您可以使用其他方法,在为其定义映射的源中指定字段。

POST _reindex
{
  "source": {
    "index": "old index",
    "_source": ["field1", "field2","field3"]
  },
  "dest": {
    "index": "new index"
  }
}
 类似资料:
  • 我使用@JsonTypeInfo和@JsonSubTypes来映射基于给定属性的解析子类。下面是我想要解析的示例JSON的一个人为示例。 用这个作为课堂 但是,当JSON包含我想要忽略的类型时,就会出现问题。例如,如果我有一个新类型的“猪”,我真的不想反序列化为对象: 并尝试解析它,它会给我这个错误: 无法将类型id猪解析为[简单类型,类动物]的子类型 我如何修复它,这样我就可以只绘制那些“狗”和

  • 是否有可能不在HiberNate中的实体层次结构中间为类创建表? 我想指出某些实体是某种类型的子集,以便返回所有这些实体的集合,但我不会在此中间类型中放置任何额外的属性。因此,保留带有id字段的额外表只是为了连接表,这听起来并不好。 更好的解决方案是实现一些公共接口< code>CommonInterface,但是这样我就失去了返回< code>List的可能性

  • 我有一个hibernate代码,它与默认的联接列值配合得很好,但是当我将联接列值更改为应用程序约定所需的值时,它开始崩溃。 之前:

  • 我有以下DTO和域对象。我正在使用Mapstruct将域对象复制到DTO对象。 使用下面的映射器将域映射到DTO。我不想将电话属性从域映射到DTO。怎么做?我尝试在mapping ignore中提供嵌套目标属性,但它给出了错误:

  • 我正在使用MapStruct和在我的代码中的不同业务用例之间共享的大模型(超过50个字段)。根据入口点的不同,有些属性将被映射,有些则不被映射。当我构建我的项目时,我总是会得到“警告:未映射的目标属性”消息。 我已经研究过,并且看到可以通过使用语义命令来告诉mapstruct忽略该字段 问题是,给定我的对象具有如此多的字段,忽略每个映射器类中的每个属性将需要大量的代码。我也不想在我的日志上出现这个

  • 问题内容: 我以为hibernate只考虑使用注释的类变量。但是今天奇怪的是,当我添加一个变量(该变量未映射到任何列,只是我在类中需要的一个变量)时,它试图将该变量作为列名包含在select语句中并引发错误- “字段列表”中的未知列“ team1_.agencyName” 我的课 - 仅供参考…我在另一个类中使用上述类并进行多对多映射 为什么会这样? 问题答案: JPA将使用该类的 所有 属性,除