spring-boot - 使用不同的字段类型重新创建弹性索引
问题描述
我是 ES 新手,目前正在尝试在我的服务中使用 spring-data-elasticsearch 3.2.1.RELEASE。设计仍处于早期阶段,因此我不得不更改/更新我们由@Document 注释的 ElasticDocument 中的字段。它看起来有点像:
@Docuemnt(...)
public class MyDocument {
@Id
private String id;
...
@Field(type = FieldType.String, name = "myField")
private String myField;
}
我不得不将 days 字段更改为一个对象,为此我只需将 Datatype 和 FieldType 属性更改为 Object。
@Docuemnt(...)
public class MyDocument {
@Id
private String id;
...
@Field(type = FieldType.Object, name = "myField")
private Object myField;
}
我从集群上的索引中删除了所有文档,并尝试使用新字段类型保存此文档,但由于以前的类型是文本,它看起来仍然出现错误。
org.springframework.data.elasticsearch.ElasticsearchException: Bulk indexing has failures.
Use ElasticsearchException.getFailedDocuments() for detailed messages
[
{
XYZ=ElasticsearchException[
Elasticsearch exception [
type=mapper_parsing_exception,
reason=failed to parse field [myField] of type [text] in document with id 'XYZ']
];
nested: ElasticsearchException[
Elasticsearch exception [
type=illegal_state_exception,
reason=Can't get text on a START_OBJECT at 1:296 ]
];
}
]
我很确定这可能不是更改字段类型的最佳做法,但我已经尝试过使用不同的 indexName 并且有效。
对于另一次尝试,手动删除此特定索引并让 spring data elasticsearch 在进行批量索引时创建它并没有帮助。我看到了同样的错误。
可能是因为我有更多实例(非本地)连接到弹性,但此时没有对此索引执行任何操作?
解决方案
推荐阅读
- python - 使用 shutil.copyfileobj 时出现 AttributeError
- c# - 正确的 Web 方法响应长度处理
- java - 无法使用 jasypt 加密进行 maven 发布
- c# - 从公共类中的 appsettings.json 文件中获取值
- php - 自定义数组
- openedge - 如何使用progress 4gl计算昨天的记录和今天的记录?
- ruby-on-rails - 设计 Invitable 的 Resque 作业失败 - 未定义的方法 `invitation_instructions' 用于#
Ruby on Rails 项目,我正在运行 Resque 来处理电子邮件(特别是 Devise 和 Devise Invitable)。设计电子邮件发送良好(通过 API 通过邮戳 gem 发送)但 devise_invitable 电子邮件在 Resque 中失败,带有
undefined me
- css - 如何使用 CSS 制作文本并遵循图像大小
- vue.js - 滚动浏览 *.vue 组件文件时,Vim 语法突出显示随机消失
- navigation - 如何聚焦到 AG-Grid 行组件以使用键盘导航