【发布时间】:2020-01-23 10:28:16
【问题描述】:
我正在使用 Spring Data ElasticSearch 3.1.0.RELEASE 与 ElasticSearch 合作,我对 ElasticSearch 本身还很陌生,对它了解不多。
Here(spring-data-elastic docs) 我看到文档的映射(模式)是使用元数据(注释)自动生成的,与 Spring Data MongoDB 中的动态方式非常相似,但在我们的组织中,所有实体都是使用@Mapping 注释进行注释并引用反映其结构的 JSON 文档,因此对于每个文档实体 - 尽管所有实体都有各自的注释,但写入 JSON 文件。
一个示例类的小 sn-p 提示我在说什么
@Document(indexName = "sampleIndex", type = "sample", shards = 16, createIndex = false)
@Mapping(mappingPath = "/elasticsearch/mappings/sample.json")
public final class Sample {
@Id
private String id;
@Field(type = FieldType.Long)
private long sampleId;
@Field(type = FieldType.Keyword)
private SampleObject sampleObject;
@Field(type = FieldType.Nested)
private Map<String, String> data;
以及各自的/elasticsearch/mappings/sample.json文件
{
"samples": {
"mappings": {
"sample": {
"properties": {
"sampleId": {
"type": "long"
},
"sampleObject": {
"type": "string"
},
"data": {
"type": "nested"
},
....
大约,我可以理解这个注释背后的整个想法,虽然我什至没有在(spring-data-elastic docs) 中看到任何提及它,我也没有看到任何有意义的JavaDocs。
无论如何,我仍然不知道这个注释是如何工作的,用例是什么以及为什么需要它,从我的角度来看,我会完全删除它,因为模式可以基于自动生成Spring 的其他注释。还是我错了?
与问题相关的补充点:我也不确定:这个映射 JSON 文件是否覆盖了实体中通过注释定义的结构?
【问题讨论】:
标签: java spring-boot elasticsearch spring-data-elasticsearch