diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts
index 10b472b1efca1..795237ef9b427 100644
--- a/x-pack/plugins/enterprise_search/common/constants.ts
+++ b/x-pack/plugins/enterprise_search/common/constants.ts
@@ -281,5 +281,9 @@ export const PLUGIN_ID = 'enterpriseSearch';
export const CONNECTOR_NATIVE_TYPE = 'native';
export const CONNECTOR_CLIENTS_TYPE = 'connector_clients';
+export const CRAWLER = {
+ github_repo: 'https://github.com/elastic/crawler',
+};
+
// TODO remove this once the connector service types are no longer in "example" state
export const EXAMPLE_CONNECTOR_SERVICE_TYPES = ['opentext_documentum'];
diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/crawler_empty_state.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/crawler_empty_state.tsx
index 8e5b91b94e39b..5a03d0560dfbf 100644
--- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/crawler_empty_state.tsx
+++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/crawler_empty_state.tsx
@@ -11,7 +11,9 @@ import { useValues } from 'kea';
import { EuiButton, EuiEmptyPrompt, EuiPanel } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
+import { CRAWLER } from '../../../../../common/constants';
import { HttpLogic } from '../../../shared/http';
+import { GithubIcon } from '../../../shared/icons/github_icon';
import { KibanaLogic } from '../../../shared/kibana';
import { NEW_CRAWLER_PATH } from '../../routes';
@@ -40,19 +42,36 @@ export const CrawlerEmptyState: React.FC = () => {
}
actions={
- KibanaLogic.values.navigateToUrl(NEW_CRAWLER_PATH)}
- >
- {i18n.translate('xpack.enterpriseSearch.crawlerEmptyState.newWebCrawlerButtonLabel', {
- defaultMessage: 'New web crawler',
- })}
-
+ Boolean(errorConnectingMessage) ? (
+
+ {i18n.translate(
+ 'xpack.enterpriseSearch.crawlerEmptyState.openSourceCrawlerButtonLabel',
+ {
+ defaultMessage: 'Source code',
+ }
+ )}
+
+ ) : (
+ KibanaLogic.values.navigateToUrl(NEW_CRAWLER_PATH)}
+ >
+ {i18n.translate('xpack.enterpriseSearch.crawlerEmptyState.newWebCrawlerButtonLabel', {
+ defaultMessage: 'New web crawler',
+ })}
+
+ )
}
/>
diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/ingestion_card/ingestion_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/ingestion_card/ingestion_card.tsx
index 0d01eea4e6787..94bbc515f92bd 100644
--- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/ingestion_card/ingestion_card.tsx
+++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/ingestion_card/ingestion_card.tsx
@@ -18,6 +18,8 @@ import {
IconType,
} from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+
import { EuiLinkTo } from '../../../../shared/react_router_helpers';
interface IngestionCardProps {
@@ -25,6 +27,7 @@ interface IngestionCardProps {
buttonLabel: string;
description: string;
href?: string;
+ isBeta?: boolean;
isDisabled?: boolean;
logo: IconType;
onClick?: () => void;
@@ -37,6 +40,7 @@ export const IngestionCard: React.FC = ({
description,
href,
isDisabled,
+ isBeta,
logo,
onClick,
title,
@@ -44,6 +48,15 @@ export const IngestionCard: React.FC = ({
return (
{
@@ -76,13 +78,23 @@ export const IngestionSelector: React.FC = () => {
{productFeatures.hasWebCrawler && (
{
'Discover, extract, and index searchable content from websites and knowledge bases.',
}
)}
- href={generatePath(ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL + NEW_CRAWLER_PATH)}
- isDisabled={crawlerDisabled}
+ href={
+ crawlerDisabled
+ ? CRAWLER.github_repo
+ : generatePath(ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL + NEW_CRAWLER_PATH)
+ }
+ isBeta={crawlerDisabled}
logo={crawlerLogo}
title={i18n.translate('xpack.enterpriseSearch.ingestSelector.method.crawler', {
defaultMessage: 'Web Crawler',
diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/icons/github_icon.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/icons/github_icon.tsx
new file mode 100644
index 0000000000000..0fc9160272838
--- /dev/null
+++ b/x-pack/plugins/enterprise_search/public/applications/shared/icons/github_icon.tsx
@@ -0,0 +1,32 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+
+export const GithubIcon = () => {
+ return (
+
+ );
+};
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 0031fbbb5666f..05f3ec249b7a2 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -17393,7 +17393,6 @@
"xpack.enterpriseSearch.ingestSelector.method.connectors.description": "Extraire, transformer, indexer et synchroniser des données issues d'une source de données tiers.",
"xpack.enterpriseSearch.ingestSelector.method.crawler": "Robot d'indexation",
"xpack.enterpriseSearch.ingestSelector.method.crawler.description": "Découvrir, extraire et indexer du contenu interrogeable provenant de sites web et de bases de connaissances.",
- "xpack.enterpriseSearch.ingestSelector.method.crawlerButtonLabel": "Indexer l'URL",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload": "Charger un fichier",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload.description": "Fichiers texte délimités, tels que CSV et TSV, JSON délimité par une nouvelle ligne.",
"xpack.enterpriseSearch.ingestSelector.method.fileUploadLabel": "Choisir un fichier",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 801f3aed69cd6..57f187a585285 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -17139,7 +17139,6 @@
"xpack.enterpriseSearch.ingestSelector.method.connectors.description": "サードパーティのデータソースからデータを抽出、変換、インデックス化、同期します。",
"xpack.enterpriseSearch.ingestSelector.method.crawler": "Webクローラー",
"xpack.enterpriseSearch.ingestSelector.method.crawler.description": "Webサイトやナレッジベースから検索可能なコンテンツを検出、抽出、インデックス化します。",
- "xpack.enterpriseSearch.ingestSelector.method.crawlerButtonLabel": "クロールURL",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload": "ファイルをアップロード",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload.description": "CSVやTSV、改行区切りのJSONなどの区切られたテキストファイル。",
"xpack.enterpriseSearch.ingestSelector.method.fileUploadLabel": "ファイルを選択",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 312eb075003c8..90a1a4a0f22ed 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -17168,7 +17168,6 @@
"xpack.enterpriseSearch.ingestSelector.method.connectors.description": "提取、转换、索引和同步来自第三方数据源的数据。",
"xpack.enterpriseSearch.ingestSelector.method.crawler": "网络爬虫",
"xpack.enterpriseSearch.ingestSelector.method.crawler.description": "发现、提取和索引网站和知识库中的可搜索内容。",
- "xpack.enterpriseSearch.ingestSelector.method.crawlerButtonLabel": "爬网 URL",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload": "上传文件",
"xpack.enterpriseSearch.ingestSelector.method.fileUpload.description": "分隔的文本文件,例如 CSV 和 TSV、换行符分隔的 JSON。",
"xpack.enterpriseSearch.ingestSelector.method.fileUploadLabel": "选择文件",