【问题标题】:Can't merge a non object mapping [suggest] with an object mapping [suggest]无法将非对象映射 [建议] 与对象映射 [建议] 合并
【发布时间】:2017-02-23 12:00:03
【问题描述】:

我将 Spring 与 Elastic Search 结合使用。我有 Completion 字段的实体,用于建议:

@Document(indexName = "entity_index", type = "entity")
public class Entity {
@Id
private Long id;

....

@CompletionField(maxInputLength = 30,payloads = true)
private Completion suggest;
...

}

当我启动我的 Spring Boot 应用程序时 - 一切都很好,没有错误。 但是当我想开始我的弹性搜索单元测试时,我得到了错误:

Failed to load Application Context

....

java.lang.IllegalArgumentException: Can't merge a non object mapping [suggest] with an object mapping [suggest]

所以,请帮我解决这个问题

【问题讨论】:

    标签: spring unit-testing spring-data-elasticsearch search-suggestion


    【解决方案1】:

    我通过删除包含弹性搜索数据的data 文件夹解决了这个问题。

    【讨论】:

      【解决方案2】:

      您无法更改现有映射。

      如果您可以丢失数据 - 删除索引并使用新映射重新创建它。 如果您需要保留数据 - 使用新映射创建新索引并将数据从旧索引复制到新索引 - 它们会与旧索引约会并使用旧名称创建别名以指向新的新索引

      在您的情况下,我怀疑您创建的索引字段未标记为 @CompletionField 并稍后添加了注释,这就是您看到该错误的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-19
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-19
        • 2019-05-27
        相关资源
        最近更新 更多