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.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

View File

@ -904,7 +904,8 @@ 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()
MlModelESIndexBuilder mlModelESIndexBuilder =
internalBuilder()
.mlModelId(mlModel.getId().toString())
.name(mlModel.getName())
.displayName(displayName)
@ -914,9 +915,21 @@ class MlModelESIndex extends ElasticSearchIndex {
.mlFeatures(mlFeatures)
.mlHyperParameters(mlHyperParameters)
.lastUpdatedTimestamp(updatedTimestamp)
.entityType("glossaryTerm")
.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;
}
}