Skip to content
94 changes: 51 additions & 43 deletions src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`,
Expand Down Expand Up @@ -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`,
},
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand All @@ -25,22 +29,22 @@ 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',
heading: 'Bucket span',
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',
Expand All @@ -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`,
},
]);
});
Expand All @@ -65,22 +69,22 @@ 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',
heading: 'Bucket span',
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',
Expand All @@ -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',
Expand All @@ -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,
Expand All @@ -139,15 +143,15 @@ 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',
mml: '1MB',
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',
Expand Down