【发布时间】:2021-03-15 12:03:07
【问题描述】:
我正在尝试通过 Spring Data + Elastic Search 读取/搜索 Elastic Search 中的现有记录。弹性搜索中的现有记录没有 _class 属性。
{ "_index": "status-000001",
"_type": "_doc",
"_id": "demo",
"_version": 1,
"_score": null,
"_source": {
"Header.Type": "1",
"Header.Version": "1.0.0",
"Data.sample_rate": "10",
"Data.upload_rate": "60",
"Data.error_code": "0x00000000",
},
}
当我浏览映射规则的文档时,文档要求需要 _class。 https://docs.spring.io/spring-data/elasticsearch/docs/current-SNAPSHOT/reference/html/#elasticsearch.mapping.meta-model.rules
但此时,我们将无法更新将数据摄取到 ES 中的格式。
索引的映射
{
"status-000001": {
"mappings": {
"properties": {
"Data": {
"properties": {
"error_code": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"sample_rate": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"upload_rate": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
},
"Header": {
"properties": {
"Type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"Version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
对于如何处理这种情况,有什么建议吗?
【问题讨论】:
-
问题不在于缺少
_class条目,Spring Data Elasticsearch 可以在没有它的情况下读取它(在处理通用数据时确实需要它)。这条记录在 Elasticsearch 中的映射是什么(GET /status-000001/_mappings)? -
@P.J.Meisch,我已经用索引的 ES 映射更新了这个问题。我正在使用 SearchHits
result = elasticsearchOperations.search(query, Status.class, IndexCoordinates.of("status-000001")); Status.class 表示 ES 记录的 POJO。
标签: spring-boot spring-data spring-data-elasticsearch