diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchEventPublisher.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchEventPublisher.java index 61bc3aaa52b..091ab55de53 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchEventPublisher.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchEventPublisher.java @@ -44,6 +44,7 @@ import org.openmetadata.catalog.elasticsearch.ElasticSearchIndexDefinition.Elast import org.openmetadata.catalog.entity.data.Dashboard; import org.openmetadata.catalog.entity.data.Database; import org.openmetadata.catalog.entity.data.DatabaseSchema; +import org.openmetadata.catalog.entity.data.Glossary; import org.openmetadata.catalog.entity.data.GlossaryTerm; import org.openmetadata.catalog.entity.data.MlModel; import org.openmetadata.catalog.entity.data.Pipeline; @@ -110,6 +111,9 @@ public class ElasticSearchEventPublisher extends AbstractEventPublisher { case Entity.GLOSSARY_TERM: updateGlossaryTerm(event); break; + case Entity.GLOSSARY: + updateGlossary(event); + break; case Entity.DATABASE: updateDatabase(event); break; @@ -450,6 +454,17 @@ public class ElasticSearchEventPublisher extends AbstractEventPublisher { } } + private void updateGlossary(ChangeEvent event) throws IOException { + if (event.getEventType() == EventType.ENTITY_DELETED) { + Glossary glossary = (Glossary) event.getEntity(); + DeleteByQueryRequest request = new DeleteByQueryRequest(ElasticSearchIndexType.GLOSSARY_SEARCH_INDEX.indexName); + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + queryBuilder.must(new TermQueryBuilder("glossary_name", glossary.getName())); + request.setQuery(queryBuilder); + deleteEntityFromElasticSearchByQuery(request); + } + } + private void updateMlModel(ChangeEvent event) throws IOException { MlModelESIndex mlModelESIndex = null; if (event.getEntity() != null diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchIndexDefinition.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchIndexDefinition.java index f8877311911..029b6543eb4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchIndexDefinition.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/elasticsearch/ElasticSearchIndexDefinition.java @@ -904,19 +904,32 @@ class MlModelESIndex extends ElasticSearchIndex { ParseTags parseTags = new ParseTags(tags); String description = mlModel.getDescription() != null ? mlModel.getDescription() : ""; String displayName = mlModel.getDisplayName() != null ? mlModel.getDisplayName() : ""; - return internalBuilder() - .mlModelId(mlModel.getId().toString()) - .name(mlModel.getName()) - .displayName(displayName) - .description(description) - .fqdn(mlModel.getFullyQualifiedName()) - .algorithm(mlModel.getAlgorithm()) - .mlFeatures(mlFeatures) - .mlHyperParameters(mlHyperParameters) - .lastUpdatedTimestamp(updatedTimestamp) - .entityType("glossaryTerm") - .suggest(suggest) - .deleted(mlModel.getDeleted()) - .tags(parseTags.tags); + MlModelESIndexBuilder mlModelESIndexBuilder = + internalBuilder() + .mlModelId(mlModel.getId().toString()) + .name(mlModel.getName()) + .displayName(displayName) + .description(description) + .fqdn(mlModel.getFullyQualifiedName()) + .algorithm(mlModel.getAlgorithm()) + .mlFeatures(mlFeatures) + .mlHyperParameters(mlHyperParameters) + .lastUpdatedTimestamp(updatedTimestamp) + .entityType("mlmodel") + .suggest(suggest) + .deleted(mlModel.getDeleted()) + .tags(parseTags.tags); + + if (mlModel.getFollowers() != null) { + mlModelESIndexBuilder.followers( + mlModel.getFollowers().stream().map(item -> item.getId().toString()).collect(Collectors.toList())); + } else if (eventType == EventType.ENTITY_CREATED) { + mlModelESIndexBuilder.followers(Collections.emptyList()); + } + + if (mlModel.getOwner() != null) { + mlModelESIndexBuilder.owner(mlModel.getOwner()); + } + return mlModelESIndexBuilder; } }