diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java index 689e7a654ae9fcbb6acc0fa659a51f804151ad03..8c89e4e64ac64c45aec1ae19d5f291090b795b40 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IMappingService.java @@ -33,5 +33,5 @@ public interface IMappingService { void updateIndexMappingForIndicesOfSameType(Set<String> indices, String fieldName) throws Exception; - void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index) throws Exception; + void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index, String kind) throws Exception; } \ No newline at end of file diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java index 12d57603d5648c77a6a592551314c66e38c52e64..9717aa18593231906ea667e355ad4c7b6ed29233 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceImpl.java @@ -173,7 +173,7 @@ public class IndexerMappingServiceImpl extends MappingServiceImpl implements IMa } @Override - public void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index) throws Exception { + public void syncIndexMappingIfRequired(RestHighLevelClient restClient, String index, String kind) throws Exception { final String cacheKey = String.format("metaAttributeMappingSynced-%s", index); try { @@ -206,8 +206,17 @@ public class IndexerMappingServiceImpl extends MappingServiceImpl implements IMa } Map<String, Object> properties = new HashMap<>(); + String[] parts = kind.split(":"); + String authority = parts[0]; + String source = parts[1]; for (String attribute : missing) { - properties.put(attribute, TypeMapper.getMetaAttributeIndexerMapping(attribute)); + if (attribute == RecordMetaAttribute.AUTHORITY.getValue()) { + properties.put(attribute, TypeMapper.getConstantIndexerType(RecordMetaAttribute.AUTHORITY, authority)); + } else if (attribute == RecordMetaAttribute.SOURCE.getValue()) { + properties.put(attribute, TypeMapper.getConstantIndexerType(RecordMetaAttribute.SOURCE, source)); + } else { + properties.put(attribute, TypeMapper.getMetaAttributeIndexerMapping(attribute)); + } } Map<String, Object> documentMapping = new HashMap<>(); diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 124dc0ebdfbc152922b56357a7d30740e94d441e..3f659080c0a9327ea2f3f4d2a9e77abf22d795ee 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -367,7 +367,7 @@ public class IndexerServiceImpl implements IndexerService { // check if index exist and sync meta attribute schema if required if (this.indicesService.isIndexReady(restClient, index)) { - this.mappingService.syncIndexMappingIfRequired(restClient, index); + this.mappingService.syncIndexMappingIfRequired(restClient, index, schema.getKind()); continue; } diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java index 61d04490a125a9e16a1208cdb97fbcbcff78f2f2..0d959f1eb7aa3a4c7b489754546ea45e789b6f05 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/IndexerMappingServiceTest.java @@ -178,7 +178,7 @@ public class IndexerMappingServiceTest { final String cacheKey = String.format("metaAttributeMappingSynced-%s", index); when(this.indexCache.get(cacheKey)).thenReturn(true); - this.sut.syncIndexMappingIfRequired(restHighLevelClient, index); + this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind); verifyNoMoreInteractions(this.mappingService); } @@ -189,7 +189,7 @@ public class IndexerMappingServiceTest { final String mapping = "{\"dynamic\":\"false\",\"properties\":{\"acl\":{\"properties\":{\"owners\":{\"type\":\"keyword\"},\"viewers\":{\"type\":\"keyword\"}}},\"ancestry\":{\"properties\":{\"parents\":{\"type\":\"keyword\"}}},\"authority\":{\"type\":\"constant_keyword\",\"value\":\"opendes\"},\"createTime\":{\"type\":\"date\"},\"createUser\":{\"type\":\"keyword\"},\"data\":{\"properties\":{\"message\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"null_value\":\"null\",\"ignore_above\":256}}}}},\"id\":{\"type\":\"keyword\"},\"index\":{\"properties\":{\"lastUpdateTime\":{\"type\":\"date\"},\"statusCode\":{\"type\":\"integer\"},\"trace\":{\"type\":\"text\"}}},\"kind\":{\"type\":\"keyword\"},\"legal\":{\"properties\":{\"legaltags\":{\"type\":\"keyword\"},\"otherRelevantDataCountries\":{\"type\":\"keyword\"},\"status\":{\"type\":\"keyword\"}}},\"modifyTime\":{\"type\":\"date\"},\"modifyUser\":{\"type\":\"keyword\"},\"namespace\":{\"type\":\"keyword\"},\"source\":{\"type\":\"constant_keyword\",\"value\":\"test\"},\"tags\":{\"type\":\"flattened\"},\"type\":{\"type\":\"keyword\"},\"version\":{\"type\":\"long\"},\"x-acl\":{\"type\":\"keyword\"}}}"; when(this.mappingService.getIndexMapping(restHighLevelClient, index)).thenReturn(mapping); - this.sut.syncIndexMappingIfRequired(restHighLevelClient, index); + this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind); verify(this.indexCache, times(1)).get(cacheKey); verify(this.indexCache, times(1)).put(cacheKey, true); @@ -205,7 +205,7 @@ public class IndexerMappingServiceTest { doReturn(this.indicesClient).when(this.restHighLevelClient).indices(); doReturn(mappingResponse).when(this.indicesClient).putMapping(any(PutMappingRequest.class), any(RequestOptions.class)); - this.sut.syncIndexMappingIfRequired(restHighLevelClient, index); + this.sut.syncIndexMappingIfRequired(restHighLevelClient, index, kind); verify(this.indexCache, times(1)).get(cacheKey); verify(this.indexCache, times(1)).put(cacheKey, true); diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 81da502c69dc5dc20160417bd1ff1085f823b139..d6d79ac87f771c8e3f1834ab1ba848f9d519e218 100644 --- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -425,7 +425,7 @@ public class IndexerServiceImpl implements IndexerService { // check if index exist and sync meta attribute schema if required if (this.indicesService.isIndexExist(restClient, index)) { - this.mappingService.syncIndexMappingIfRequired(restClient, index); + this.mappingService.syncIndexMappingIfRequired(restClient, index, schema.getKind()); continue; }