java - @Field 注释属性不适用于动态映射功能
问题描述
我们正在运行 spring-data 4.1.0,Spring 5.2.10
这可能听起来很奇怪,但这是场景(es 的状态没有索引/映射):
启动容器,第一件事spring-data-es
就是使用所有映射创建索引。是的!但如果该过程由于某种原因失败,则不会创建映射。好的可以理解。
之后(映射失败)你保存一个实体..它似乎 spring/es 将动态地开始为该实体生成映射,因为它正在被保存。酷..是的!但是......一些@Field 属性没有进入映射。IE 的 copy_to 属性。
我不知道所有动态映射是如何工作的,是在 java 端还是 es 端。我猜如果动态映射发生在 es 端,那么这种行为是有道理的。但我想我注意到其他@Field
属性进入映射,如字段类型和数据转换的东西。
这是预期的行为吗?我想我在想@Field
无论映射是如何创建的,注释属性都应该进入映射。
解决方案
你的假设是正确的。
仅当@Field
使用 Spring Data Elasticsearch 编写映射时才考虑注释 - 在存储库初始化时或IndexOperations
调用接口中的相应方法之一时。
当索引创建映射失败时,它不会在之后自动完成。并且它不会在下一次应用程序启动时完成,因为索引已经存在。
当实体存储在未定义映射的索引中时,Elasticsearch 会自动创建映射,因为 Elasticsearch 对 Spring Data Elasticsearch 注释一无所知。
当无法存储映射时,您是否在应用程序中遇到错误?
推荐阅读
- database - ReasonML sample web server with a db
- matlab - Plotting Eye Diagram from ADS Data in MATLAB
- javascript - 点击下拉菜单上的 JQuery / Bootstrap 日期选择器
- sparql - Prefered rank in Wikidata not working properly for population in some cases?
- ios - 二元运算符“==”不能应用于“字符串”和“UInt32”类型的操作数
- javascript - 期望返回值等于 $promise
- phaser-framework - Phaser Game Keyboard Arrow Keys to Mobile Touch
- django - Django: dynamic changing email recepients
- jquery - Generate Dynamic Inputs with Unique Names & IDs
- javascript - Can't manage to download PDF retrieved from BLOB via Servlet