【问题标题】:@Field annotations attributes not working for dynamic mapping feature@Field 注释属性不适用于动态映射功能
【发布时间】:2021-03-13 11:58:18
【问题描述】:

我们正在运行 spring-data 4.1.0、Spring 5.2.10

这可能听起来很奇怪,但这里是场景(es 的状态没有索引/映射):

启动容器,spring-data-es 所做的第一件事就是创建包含所有映射的索引。是的!但如果该过程由于某种原因失败,则不会创建映射。好的可以理解。

之后(映射失败)您保存了一个实体.. 似乎 spring/es 将在该实体被保存时动态地开始生成该实体的映射。酷..是的!但是......一些@Field 属性没有进入映射。 IE copy_to 属性。

我不知道所有动态映射是如何工作的,是在 java 端还是 es 端。我猜如果动态映射发生在 es 端,那么这种行为是有道理的。但我想我注意到其他@Field 属性进入映射,如字段类型和数据转换的东西。

这是预期的行为吗?我想我在想@Field 注释属性应该进入映射,不管映射是如何创建的。

【问题讨论】:

    标签: java spring-data spring-data-elasticsearch


    【解决方案1】:

    你的假设是正确的。

    @Field 注释仅在使用 Spring Data Elasticsearch 编写映射时才考虑 - 在存储库初始化时或在调用 IndexOperations 接口中的相应方法之一时。

    当索引创建映射失败时,它不会在之后自动完成。并且它不会在下一次应用程序启动时完成,因为索引已经存在。

    当实体存储在未定义映射的索引中时,Elasticsearch 会自动创建映射,因为 Elasticsearch 不知道任何有关 Spring Data Elasticsearch 注释的信息。

    当无法存储映射时,您是否在应用程序中遇到错误?

    【讨论】:

    • 这就是我的想法。是的,我在无法存储映射时出错,但直到我在 es 端验证后才知道。一旦我修复了映射异常,映射就会正确创建。我认为,当发生映射异常时,我们需要在日志中添加更多文本,以便它脱颖而出:) 在我年老时失明。 :)...
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多