Я работаю с ElasticSearch , используя Spring Data ElasticSearch 3.1.0.RELEASE , и я довольно новичок в самом ElasticSearch, зная об этом немного.
Здесь (spring-data-elasti c docs) Я вижу, что сопоставления (схемы) для документов генерируются автоматически с использованием метаданных (аннотаций) почти так же, как в Spring Data MongoDB динамически c, но в нашей организации все сущности снабжены аннотацией @ Mapping и ссылаются на документы JSON, которые отражают их структуру, поэтому для каждой сущности документа - JSON файл записан, хотя все сущности имеют соответствующие аннотации.
Небольшой фрагмент примера класса, чтобы дать подсказку, о чем я говорю
@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). -elasti c документы) и я не вижу ничего значимого JavaDocs .
Несмотря на это, я до сих пор не могу понять, как работает эта аннотация, каковы варианты использования и почему если это необходимо, с моей точки зрения, я бы просто полностью удалил его, потому что схемы могут генерироваться автоматически на основе других аннотаций Spring. Или я не прав?
Дополнительные вопросы, связанные с вопросом: я тоже не уверен в этом: перекрывает ли этот файл сопоставления JSON структуру, определенную в сущности аннотациями?