Search Index read entities from index mapping (#19084)

This commit is contained in:
Mohit Yadav 2024-12-16 15:55:12 +05:30 committed by GitHub
parent 57e814c15d
commit 2888e37998
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 116 deletions

View File

@ -1,47 +1,8 @@
package org.openmetadata.service.apps.bundles.searchIndex;
import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty;
import static org.openmetadata.service.Entity.API_COLLCECTION;
import static org.openmetadata.service.Entity.API_ENDPOINT;
import static org.openmetadata.service.Entity.API_SERVICE;
import static org.openmetadata.service.Entity.CHART;
import static org.openmetadata.service.Entity.CLASSIFICATION;
import static org.openmetadata.service.Entity.CONTAINER;
import static org.openmetadata.service.Entity.DASHBOARD;
import static org.openmetadata.service.Entity.DASHBOARD_DATA_MODEL;
import static org.openmetadata.service.Entity.DASHBOARD_SERVICE;
import static org.openmetadata.service.Entity.DATABASE;
import static org.openmetadata.service.Entity.DATABASE_SCHEMA;
import static org.openmetadata.service.Entity.DATABASE_SERVICE;
import static org.openmetadata.service.Entity.DATA_PRODUCT;
import static org.openmetadata.service.Entity.DOMAIN;
import static org.openmetadata.service.Entity.ENTITY_REPORT_DATA;
import static org.openmetadata.service.Entity.GLOSSARY;
import static org.openmetadata.service.Entity.GLOSSARY_TERM;
import static org.openmetadata.service.Entity.INGESTION_PIPELINE;
import static org.openmetadata.service.Entity.MESSAGING_SERVICE;
import static org.openmetadata.service.Entity.METADATA_SERVICE;
import static org.openmetadata.service.Entity.METRIC;
import static org.openmetadata.service.Entity.MLMODEL;
import static org.openmetadata.service.Entity.MLMODEL_SERVICE;
import static org.openmetadata.service.Entity.PIPELINE;
import static org.openmetadata.service.Entity.PIPELINE_SERVICE;
import static org.openmetadata.service.Entity.QUERY;
import static org.openmetadata.service.Entity.SEARCH_INDEX;
import static org.openmetadata.service.Entity.SEARCH_SERVICE;
import static org.openmetadata.service.Entity.STORAGE_SERVICE;
import static org.openmetadata.service.Entity.STORED_PROCEDURE;
import static org.openmetadata.service.Entity.TABLE;
import static org.openmetadata.service.Entity.TAG;
import static org.openmetadata.service.Entity.TEAM;
import static org.openmetadata.service.Entity.TEST_CASE;
import static org.openmetadata.service.Entity.TEST_CASE_RESOLUTION_STATUS;
import static org.openmetadata.service.Entity.TEST_CASE_RESULT;
import static org.openmetadata.service.Entity.TEST_SUITE;
import static org.openmetadata.service.Entity.TOPIC;
import static org.openmetadata.service.Entity.USER;
import static org.openmetadata.service.Entity.WEB_ANALYTIC_ENTITY_VIEW_REPORT_DATA;
import static org.openmetadata.service.Entity.WEB_ANALYTIC_USER_ACTIVITY_REPORT_DATA;
import static org.openmetadata.service.apps.scheduler.AbstractOmAppJobListener.APP_RUN_STATS;
import static org.openmetadata.service.apps.scheduler.AbstractOmAppJobListener.WEBSOCKET_STATUS_CHANNEL;
import static org.openmetadata.service.apps.scheduler.AppScheduler.ON_DEMAND_JOB;
@ -99,53 +60,8 @@ import org.quartz.JobExecutionContext;
@Slf4j
public class SearchIndexApp extends AbstractNativeApplication {
private static final String ALL = "all";
public static final Set<String> ALL_ENTITIES =
Set.of(
TABLE,
DASHBOARD,
TOPIC,
PIPELINE,
INGESTION_PIPELINE,
SEARCH_INDEX,
USER,
TEAM,
GLOSSARY,
GLOSSARY_TERM,
MLMODEL,
TAG,
CLASSIFICATION,
QUERY,
CONTAINER,
DATABASE,
DATABASE_SCHEMA,
TEST_CASE,
TEST_SUITE,
CHART,
DASHBOARD_DATA_MODEL,
DATABASE_SERVICE,
MESSAGING_SERVICE,
DASHBOARD_SERVICE,
PIPELINE_SERVICE,
MLMODEL_SERVICE,
STORAGE_SERVICE,
METADATA_SERVICE,
SEARCH_SERVICE,
ENTITY_REPORT_DATA,
WEB_ANALYTIC_ENTITY_VIEW_REPORT_DATA,
WEB_ANALYTIC_USER_ACTIVITY_REPORT_DATA,
DOMAIN,
STORED_PROCEDURE,
DATA_PRODUCT,
TEST_CASE_RESOLUTION_STATUS,
TEST_CASE_RESULT,
API_SERVICE,
API_ENDPOINT,
API_COLLCECTION,
METRIC);
public static final Set<String> TIME_SERIES_ENTITIES =
Set.of(
ReportData.ReportDataType.ENTITY_REPORT_DATA.value(),
@ -180,8 +96,9 @@ public class SearchIndexApp extends AbstractNativeApplication {
JsonUtils.convertValue(app.getAppConfiguration(), EventPublisherJob.class)
.withStats(new Stats());
if (request.getEntities().contains(ALL)) {
request.setEntities(ALL_ENTITIES);
if (request.getEntities().size() == 1 && request.getEntities().contains(ALL)) {
SearchRepository searchRepo = Entity.getSearchRepo();
request.setEntities(searchRepo.getSearchEntities());
}
jobData = request;

View File

@ -38,6 +38,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
@ -1057,4 +1058,8 @@ public class SearchRepository {
}
return new ArrayList<>();
}
public Set<String> getSearchEntities() {
return new HashSet<>(entityIndexMap.keySet());
}
}

View File

@ -66,46 +66,48 @@
"type": "string",
"enum": [
"table",
"dashboard",
"topic",
"pipeline",
"ingestionPipeline",
"searchIndex",
"user",
"team",
"glossary",
"glossaryTerm",
"mlmodel",
"tag",
"classification",
"query",
"container",
"database",
"databaseSchema",
"testCase",
"container",
"testSuite",
"chart",
"dashboardDataModel",
"databaseService",
"messagingService",
"dashboardService",
"pipelineService",
"mlmodelService",
"storageService",
"pipelineService",
"messagingService",
"entityReportData",
"ingestionPipeline",
"database",
"metadataService",
"searchService",
"entityReportData",
"aggregatedCostAnalysisReportData",
"tag",
"dashboard",
"rawCostAnalysisReportData",
"webAnalyticEntityViewReportData",
"webAnalyticUserActivityReportData",
"domain",
"storedProcedure",
"dataProduct",
"testCaseResolutionStatus",
"testCaseResult",
"databaseService",
"dashboardService",
"query",
"apiService",
"apiEndpoint",
"searchIndex",
"testCaseResult",
"apiCollection",
"metric"
"team",
"mlmodel",
"classification",
"glossaryTerm",
"testCaseResolutionStatus",
"dashboardDataModel",
"pipeline",
"glossary",
"apiEndpoint",
"storageService",
"metric",
"webAnalyticUserActivityReportData",
"domain",
"topic",
"chart",
"user",
"testCase"
]
},
"default": ["all"],