我们正在运行SpringData4.1.0和Spring5.2.10
这听起来可能有点奇怪,但下面是一个场景(es no index/mapping的状态):
把容器烧起来 spring-data-es
是用所有Map创建索引。赞成!但如果该过程由于某种原因失败,则不会创建Map。好的,可以理解。
之后(Map失败)保存一个实体。。当实体被保存时,spring/es似乎会动态地开始为它生成Map。酷。。赞成!但是。。。一些@field属性没有进入Map。即复制到属性。
我不知道所有的动态Map是如何工作的,是在java端还是es端。我想如果动态Map发生在es端,那么这种行为是有意义的。但我想我注意到了另一个 @Field
属性,比如字段类型和数据转换。
这是预期的行为吗?我想我是这么想的 @Field
不管Map是如何创建的,注解属性都应该进入Map中。
1条答案
按热度按时间xggvc2p61#
你的假设是正确的。
这个
@Field
只有在使用SpringDataElasticSearch编写Map时,或者在存储库初始化时,或者IndexOperations
接口被调用。当索引创建上的Map失败后,它不会自动完成。而且它不会在下一个应用程序启动时执行,因为索引已经存在。
当实体存储在没有定义Map的索引中时,elasticsearch会自动创建Map,而elasticsearch对spring数据一无所知。
当Map无法存储时,应用程序中是否出现错误?