diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts index ef33626c34a21..a55f5e097806f 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts @@ -515,50 +515,56 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D apiKeys: `${KIBANA_DOCS}api-keys.html`, }, ml: { - guide: `${MACHINE_LEARNING_DOCS}index.html`, - aggregations: `${MACHINE_LEARNING_DOCS}ml-configuring-aggregation.html`, - anomalyDetection: `${MACHINE_LEARNING_DOCS}ml-ad-overview.html`, - anomalyDetectionBucketSpan: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-bucket-span`, - anomalyDetectionConfiguringCategories: `${MACHINE_LEARNING_DOCS}ml-configuring-categories.html`, - anomalyDetectionCardinality: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-cardinality`, - anomalyDetectionCreateJobs: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-create-job`, - anomalyDetectionDetectors: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-detectors`, - anomalyDetectionFunctions: `${MACHINE_LEARNING_DOCS}ml-functions.html`, - anomalyDetectionInfluencers: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-influencers`, - anomalyDetectionJobs: `${MACHINE_LEARNING_DOCS}ml-ad-finding-anomalies.html`, - anomalyDetectionJobResource: `${ELASTICSEARCH_DOCS}ml-put-job.html#ml-put-job-path-parms`, - anomalyDetectionJobResourceAnalysisConfig: `${ELASTICSEARCH_DOCS}ml-put-job.html#put-analysisconfig`, - anomalyDetectionJobTips: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-job-tips`, - anomalyDetectionScoreExplanation: `${MACHINE_LEARNING_DOCS}ml-ad-explain.html`, - alertingRules: `${MACHINE_LEARNING_DOCS}ml-configuring-alerts.html`, - anomalyDetectionModelMemoryLimits: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-model-memory-limits`, - calendars: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-calendars`, - classificationEvaluation: `${MACHINE_LEARNING_DOCS}ml-dfa-classification.html#ml-dfanalytics-classification-evaluation`, - customRules: `${MACHINE_LEARNING_DOCS}ml-ad-run-jobs.html#ml-ad-rules`, - customUrls: `${MACHINE_LEARNING_DOCS}ml-configuring-url.html`, - dataFrameAnalytics: `${MACHINE_LEARNING_DOCS}ml-dfanalytics.html`, - dFAPrepareData: `${MACHINE_LEARNING_DOCS}ml-dfa-overview.html#prepare-transform-data`, - dFAStartJob: `${ELASTICSEARCH_DOCS}start-dfanalytics.html`, - dFACreateJob: `${ELASTICSEARCH_DOCS}put-dfanalytics.html`, - featureImportance: `${MACHINE_LEARNING_DOCS}ml-feature-importance.html`, - outlierDetectionRoc: `${MACHINE_LEARNING_DOCS}ml-dfa-finding-outliers.html#ml-dfanalytics-roc`, - regressionEvaluation: `${MACHINE_LEARNING_DOCS}ml-dfa-regression.html#ml-dfanalytics-regression-evaluation`, - classificationAucRoc: `${MACHINE_LEARNING_DOCS}ml-dfa-classification.html#ml-dfanalytics-class-aucroc`, - setUpgradeMode: `${ELASTICSEARCH_DOCS}ml-set-upgrade-mode.html`, - trainedModels: `${MACHINE_LEARNING_DOCS}ml-trained-models.html`, - startTrainedModelsDeployment: `${MACHINE_LEARNING_DOCS}ml-nlp-deploy-model.html`, - logsAnomalyDetectionConfigs: `${MACHINE_LEARNING_DOCS}ootb-ml-jobs-logs-ui.html`, - metricsAnomalyDetectionConfigs: `${MACHINE_LEARNING_DOCS}ootb-ml-jobs-metrics-ui.html`, - nlpElser: `${MACHINE_LEARNING_DOCS}ml-nlp-elser.html`, - nlpE5: `${MACHINE_LEARNING_DOCS}ml-nlp-e5.html`, - nlpImportModel: `${MACHINE_LEARNING_DOCS}ml-nlp-import-model.html`, + guide: `${ELASTIC_DOCS}explore-analyze/machine-learning`, + aggregations: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-configuring-aggregation`, + anomalyDetection: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection`, + anomalyDetectionBucketSpan: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-bucket-span`, + anomalyDetectionConfiguringCategories: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-configuring-categories`, + anomalyDetectionCardinality: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-cardinality`, + anomalyDetectionCreateJobs: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-create-job`, + anomalyDetectionDetectors: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-detectors`, + anomalyDetectionFunctions: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-functions`, + anomalyDetectionInfluencers: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-influencers`, + anomalyDetectionJobs: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-finding-anomalies`, + anomalyDetectionJobResource: isServerless + ? `${ELASTICSEARCH_SERVERLESS_APIS}operation/operation-ml-put-job` + : `${ELASTICSEARCH_APIS}operation/operation-ml-put-job`, + anomalyDetectionJobResourceAnalysisConfig: isServerless + ? `${ELASTICSEARCH_SERVERLESS_APIS}operation/operation-ml-put-job` + : `${ELASTICSEARCH_APIS}operation/operation-ml-put-job`, + anomalyDetectionJobTips: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs`, + anomalyDetectionScoreExplanation: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-explain`, + alertingRules: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-configuring-alerts`, + anomalyDetectionModelMemoryLimits: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-model-memory-limits`, + calendars: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-calendars`, + classificationEvaluation: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-dfa-classification#ml-dfanalytics-classification-evaluation`, + customRules: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-rules`, + customUrls: `${ELASTIC_DOCS}explore-analyze/machine-learning/anomaly-detection/ml-configuring-url`, + dataFrameAnalytics: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics`, + dFAPrepareData: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-dfa-overview#prepare-transform-data`, + dFAStartJob: isServerless + ? `${ELASTICSEARCH_SERVERLESS_APIS}operation/operation-ml-start-data-frame-analytics` + : `${ELASTICSEARCH_APIS}operation/operation-ml-start-data-frame-analytics`, + dFACreateJob: isServerless + ? `${ELASTICSEARCH_SERVERLESS_APIS}operation/operation-ml-put-data-frame-analytics` + : `${ELASTICSEARCH_APIS}operation/operation-ml-put-data-frame-analytics`, + featureImportance: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-feature-importance`, + outlierDetectionRoc: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-dfa-finding-outliers#ml-dfanalytics-roc`, + regressionEvaluation: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-dfa-regression#ml-dfanalytics-regression-evaluation`, + classificationAucRoc: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-dfa-classification#ml-dfanalytics-class-aucroc`, + setUpgradeMode: `${ELASTICSEARCH_APIS}operation/operation-ml-set-upgrade-mode`, + trainedModels: `${ELASTIC_DOCS}explore-analyze/machine-learning/data-frame-analytics/ml-trained-models`, + startTrainedModelsDeployment: `${ELASTIC_DOCS}explore-analyze/machine-learning/nlp/ml-nlp-deploy-model`, + logsAnomalyDetectionConfigs: `${ELASTIC_DOCS}reference/data-analysis/machine-learning/ootb-ml-jobs-logs-ui`, + metricsAnomalyDetectionConfigs: `${ELASTIC_DOCS}reference/data-analysis/machine-learning/ootb-ml-jobs-metrics-ui`, + nlpElser: `${ELASTIC_DOCS}explore-analyze/machine-learning/nlp/ml-nlp-elser`, + nlpE5: `${ELASTIC_DOCS}explore-analyze/machine-learning/nlp/ml-nlp-e5`, + nlpImportModel: `${ELASTIC_DOCS}explore-analyze/machine-learning/nlp/ml-nlp-import-model`, }, transforms: { - guide: isServerless - ? `${SERVERLESS_DOCS}transforms.html` - : `${ELASTICSEARCH_DOCS}transforms.html`, - alertingRules: `${ELASTICSEARCH_DOCS}transform-alerts.html`, - overview: `${ELASTICSEARCH_DOCS}transform-overview.html`, + guide: `https://www.elastic.co/docs/explore-analyze/transforms`, + alertingRules: `https://www.elastic.co/docs/explore-analyze/transforms/transform-alerts`, + overview: `https://www.elastic.co/docs/explore-analyze/transforms/transform-overview`, }, visualize: { guide: `${KIBANA_DOCS}_panels_and_visualizations.html`, @@ -1019,7 +1025,9 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D synonymsAPIDocumentation: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/reference/current/synonyms-apis.html`, }, queryRules: { - queryRulesAPIDocumentation: `${ELASTIC_WEBSITE_URL}docs/api/doc/elasticsearch/group/endpoint-query_rules`, + queryRulesAPIDocumentation: isServerless + ? `${ELASTICSEARCH_SERVERLESS_APIS}group/endpoint-query_rules` + : `${ELASTICSEARCH_APIS}group/endpoint-query_rules`, }, }); }; diff --git a/x-pack/platform/plugins/shared/ml/common/constants/messages.test.ts b/x-pack/platform/plugins/shared/ml/common/constants/messages.test.ts index 4a93a553f6761..5f6190796a970 100644 --- a/x-pack/platform/plugins/shared/ml/common/constants/messages.test.ts +++ b/x-pack/platform/plugins/shared/ml/common/constants/messages.test.ts @@ -15,6 +15,10 @@ import { nonBasicIssuesMessages, } from './messages.test.mock'; +const BASE_URL_DOCS = 'https://www.elastic.co/docs'; +const BASE_URL_API = `${BASE_URL_DOCS}/api/doc/elasticsearch/operation`; +const BASE_URL_EXPLORE = `${BASE_URL_DOCS}/explore-analyze/machine-learning/anomaly-detection`; + describe('Constants: Messages parseMessages()', () => { const docLinksService = docLinksServiceMock.createStartContract(); @@ -25,14 +29,14 @@ describe('Constants: Messages parseMessages()', () => { id: 'job_id_valid', status: 'success', text: 'Lowercase alphanumeric (a-z and 0-9) characters, hyphens or underscores, starts and ends with an alphanumeric character, and is no more than 64 characters long.', - url: 'https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/ml-put-job.html#ml-put-job-path-parms', + url: `${BASE_URL_API}/operation-ml-put-job`, }, { heading: 'Detector functions', id: 'detectors_function_not_empty', status: 'success', text: 'Presence of detector functions validated in all detectors.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-detectors', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-detectors`, }, { bucketSpan: '15m', @@ -40,7 +44,7 @@ describe('Constants: Messages parseMessages()', () => { id: 'success_bucket_span', status: 'success', text: 'Format of "15m" is valid and passed validation checks.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-bucket-span', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-bucket-span`, }, { heading: 'Time range', @@ -53,7 +57,7 @@ describe('Constants: Messages parseMessages()', () => { id: 'success_mml', status: 'success', text: 'Valid and within the estimated model memory limit.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-model-memory-limits', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-model-memory-limits`, }, ]); }); @@ -65,14 +69,14 @@ describe('Constants: Messages parseMessages()', () => { status: 'error', heading: 'Job ID', text: 'Job ID is invalid. It can contain lowercase alphanumeric (a-z and 0-9) characters, hyphens or underscores and must start and end with an alphanumeric character.', - url: 'https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/ml-put-job.html#ml-put-job-path-parms', + url: `${BASE_URL_API}/operation-ml-put-job`, }, { heading: 'Detector functions', id: 'detectors_function_not_empty', status: 'success', text: 'Presence of detector functions validated in all detectors.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-detectors', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-detectors`, }, { bucketSpan: '15m', @@ -80,7 +84,7 @@ describe('Constants: Messages parseMessages()', () => { id: 'bucket_span_valid', status: 'success', text: 'Format of "15m" is valid.', - url: 'https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/ml-put-job.html#put-analysisconfig', + url: `${BASE_URL_API}/operation-ml-put-job`, }, { id: 'skipped_extended_tests', @@ -97,14 +101,14 @@ describe('Constants: Messages parseMessages()', () => { id: 'job_id_valid', status: 'success', text: 'Lowercase alphanumeric (a-z and 0-9) characters, hyphens or underscores, starts and ends with an alphanumeric character, and is no more than 64 characters long.', - url: 'https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/ml-put-job.html#ml-put-job-path-parms', + url: `${BASE_URL_API}/operation-ml-put-job`, }, { heading: 'Detector functions', id: 'detectors_function_not_empty', status: 'success', text: 'Presence of detector functions validated in all detectors.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-detectors', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-detectors`, }, { id: 'cardinality_model_plot_high', @@ -117,14 +121,14 @@ describe('Constants: Messages parseMessages()', () => { status: 'warning', heading: 'Partition field cardinality', text: 'Cardinality of partition_field "order_id" is above 1000 and might result in high memory usage.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-cardinality', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-cardinality`, }, { heading: 'Bucket span', id: 'bucket_span_high', status: 'info', text: 'Bucket span is 1 day or more. Be aware that days are considered as UTC days, not local days.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-bucket-span', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-bucket-span`, }, { bucketSpanCompareFactor: 25, @@ -139,7 +143,7 @@ describe('Constants: Messages parseMessages()', () => { status: 'success', heading: 'Influencer configuration', text: 'Passed the validation checks.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-influencers', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-influencers`, }, { id: 'half_estimated_mml_greater_than_mml', @@ -147,7 +151,7 @@ describe('Constants: Messages parseMessages()', () => { status: 'warning', heading: 'Model memory limit', text: 'The specified model memory limit is less than half of the estimated model memory limit and will likely hit the hard limit.', - url: 'https://www.elastic.co/guide/en/machine-learning/mocked-test-branch/ml-ad-run-jobs.html#ml-ad-model-memory-limits', + url: `${BASE_URL_EXPLORE}/ml-ad-run-jobs#ml-ad-model-memory-limits`, }, { id: 'missing_summary_count_field_name',