Fix #5352: Getting single term for multiple times from search index; Fix #5330: Support Advanced search provide multiple field suggestions (#5356)

This commit is contained in:
Sriharsha Chintalapani 2022-06-08 00:29:38 -07:00 committed by GitHub
parent 67e108f08f
commit b4ffc36e89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 14 deletions

View File

@ -44,6 +44,7 @@ import org.openmetadata.catalog.elasticsearch.ElasticSearchIndexDefinition.Elast
import org.openmetadata.catalog.entity.data.Dashboard; import org.openmetadata.catalog.entity.data.Dashboard;
import org.openmetadata.catalog.entity.data.Database; import org.openmetadata.catalog.entity.data.Database;
import org.openmetadata.catalog.entity.data.DatabaseSchema; 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.GlossaryTerm;
import org.openmetadata.catalog.entity.data.MlModel; import org.openmetadata.catalog.entity.data.MlModel;
import org.openmetadata.catalog.entity.data.Pipeline; import org.openmetadata.catalog.entity.data.Pipeline;
@ -110,6 +111,9 @@ public class ElasticSearchEventPublisher extends AbstractEventPublisher {
case Entity.GLOSSARY_TERM: case Entity.GLOSSARY_TERM:
updateGlossaryTerm(event); updateGlossaryTerm(event);
break; break;
case Entity.GLOSSARY:
updateGlossary(event);
break;
case Entity.DATABASE: case Entity.DATABASE:
updateDatabase(event); updateDatabase(event);
break; 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 { private void updateMlModel(ChangeEvent event) throws IOException {
MlModelESIndex mlModelESIndex = null; MlModelESIndex mlModelESIndex = null;
if (event.getEntity() != null if (event.getEntity() != null

View File

@ -904,19 +904,32 @@ class MlModelESIndex extends ElasticSearchIndex {
ParseTags parseTags = new ParseTags(tags); ParseTags parseTags = new ParseTags(tags);
String description = mlModel.getDescription() != null ? mlModel.getDescription() : ""; String description = mlModel.getDescription() != null ? mlModel.getDescription() : "";
String displayName = mlModel.getDisplayName() != null ? mlModel.getDisplayName() : ""; String displayName = mlModel.getDisplayName() != null ? mlModel.getDisplayName() : "";
return internalBuilder() MlModelESIndexBuilder mlModelESIndexBuilder =
.mlModelId(mlModel.getId().toString()) internalBuilder()
.name(mlModel.getName()) .mlModelId(mlModel.getId().toString())
.displayName(displayName) .name(mlModel.getName())
.description(description) .displayName(displayName)
.fqdn(mlModel.getFullyQualifiedName()) .description(description)
.algorithm(mlModel.getAlgorithm()) .fqdn(mlModel.getFullyQualifiedName())
.mlFeatures(mlFeatures) .algorithm(mlModel.getAlgorithm())
.mlHyperParameters(mlHyperParameters) .mlFeatures(mlFeatures)
.lastUpdatedTimestamp(updatedTimestamp) .mlHyperParameters(mlHyperParameters)
.entityType("glossaryTerm") .lastUpdatedTimestamp(updatedTimestamp)
.suggest(suggest) .entityType("mlmodel")
.deleted(mlModel.getDeleted()) .suggest(suggest)
.tags(parseTags.tags); .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;
} }
} }