Справочник коннектора Elastic GitHub
Коннектор Elastic GitHub — это коннектор для GitHub. Этот коннектор написан на Python с использованием фреймворка коннекторов Elastic.
Посмотреть исходный код этого коннектора (ветка 8.17, совместимая с Elastic 8.17).
Справочник управляемого коннектора Elastic
Просмотр справки по управляемому соединителю Elastic
Доступность и предварительные требования
Этот соединитель доступен как управляемый соединитель начиная с версии Elastic 8.11.0.
Чтобы использовать этот соединитель напрямую в Elastic Cloud, выполните все требования к управляемым соединителям.
Создать соединитель GitHub
Использовать интерфейс
Чтобы создать новый соединитель GitHub:
- В интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Соединители из главного меню или воспользуйтесь полем глобального поиска.
- Следуйте инструкциям по созданию нового собственного соединителя GitHub.
Для дополнительных операций см. Интерфейс соединителей в Kibana.
Использовать API
Вы можете использовать Elasticsearch API создания соединителя для создания нового собственного соединителя GitHub.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
is_native=True,
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
is_native: true,
});
console.log(response); PUT _connector/my-github-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from GitHub",
"service_type": "github",
"is_native": true
} Вам также потребуется создать ключ API для использования соединителем.
Пользователю необходимы привилегии кластера manage_api_key, manage_connector и write_connector_secrets для программирования генерации ключей API.
Чтобы создать ключ API для соединителя:
-
Запустите следующую команду, заменив значения там, где необходимо. Обратите внимание на значения
idиencodedиз ответа:resp = client.security.create_api_key( name="my-connector-api-key", role_descriptors={ "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "my-connector-api-key", role_descriptors: { "my-connector-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "my-connector-api-key", "role_descriptors": { "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } -
Используйте значение
encodedдля хранения секрета соединителя и обратите внимание на значениеidиз этого ответа:resp = client.perform_request( "POST", "/_connector/_secret", headers={"Content-Type": "application/json"}, body={ "value": "encoded_api_key" }, ) print(resp)const response = await client.transport.request({ method: "POST", path: "/_connector/_secret", body: { value: "encoded_api_key", }, }); console.log(response);POST _connector/_secret { "value": "encoded_api_key" } -
Используйте ключ API
idи секрет соединителяidдля обновления соединителя:resp = client.connector.update_api_key_id( connector_id="my_connector_id>", api_key_id="API key_id", api_key_secret_id="secret_id", ) print(resp)const response = await client.connector.updateApiKeyId({ connector_id: "my_connector_id>", api_key_id: "API key_id", api_key_secret_id: "secret_id", }); console.log(response);PUT /_connector/my_connector_id>/_api_key_id { "api_key_id": "API key_id", "api_key_secret_id": "secret_id" }
Подробную информацию обо всех доступных API соединителей см. в документации API Elasticsearch.
Использование
Чтобы использовать этот соединитель как управляемый соединитель, см. Управляемые соединители Elastic.
Для дополнительных операций см. Интерфейс соединителей в Kibana.
Личный токен доступа GitHub
Настройте личный токен доступа GitHub для получения данных из GitHub.
Выполните следующие шаги для генерации личного токена доступа GitHub:
- Перейдите в Настройки GitHub → Настройки разработчика → Личные токены доступа → Токены (классические).
- Выберите
Generate new token. -
Добавьте примечание и выберите следующие области:
-
repo -
user -
read:org
-
- Выберите
Generate tokenи скопируйте токен.
Приложение GitHub
Настройте приложение GitHub для извлечения данных из GitHub.
Выполните эти шаги для создания приложения GitHub:
- Перейдите в Настройки GitHub → Настройки разработчика → Приложения GitHub.
- Выберите
New GitHub App. - Добавьте имя и адрес домашней страницы, снимите флажок
Activeв разделеWebhook. - В разделе
PermissionsвыберитеRead-onlyдляCommit statuses,Contents,Issues,MetadataиPull requestsподRepository permissions, выберитеRead-onlyдляMembersподOrganization permissions. - Выберите
Any accountдляWhere can this GitHub App be installed?. - Нажмите
Create GitHub App. - Прокрутите вниз до раздела
Private keysи нажмитеGenerate a private key. - Нажмите
Install Appв верхнем левом углу, выберите организации/личные учетные записи, на которых вы хотите установить приложение GitHub, и нажмитеInstall. - Вы можете установить его на все репозитории или выбранные репозитории и нажать
Install.
Совместимость
Поддерживаются как GitHub, так и GitHub Enterprise.
Настройка
Необходимы следующие поля конфигурации:
- Источник данных
- Переключатель между GitHub Cloud и GitHub Server.
- URL сервера
- URL экземпляра GitHub Server. (Только для GitHub Server)
- Метод аутентификации
- Метод аутентификации экземпляра GitHub. Переключатель между
Personal access tokenиGitHub App. - Токен
- Личный токен доступа GitHub для аутентификации экземпляра GitHub. Это поле доступно только для метода аутентификации
Personal access token. - Тип репозитория
- Переключатель между
OrganizationиOther. Обратите внимание, что безопасность уровня документа (DLS) доступна только для репозиториевOrganization. - Название организации
- Название организации, данные из которой необходимо получить. Это поле доступно только при установке
Authentication methodвPersonal access tokenиRepository TypeвOrganization. - ID приложения
- ID приложения GitHub. Это поле доступно только при установке
Authentication methodвGitHub App. - Приватный ключ приложения
- Приватный ключ, сгенерированный для приложения GitHub. Это поле доступно только при установке
Authentication methodвGitHub App. - Список репозиториев
-
Список репозиториев, разделенных запятыми, для извлечения данных из экземпляра GitHub. Если значение равно
*, соединитель извлечёт данные из всех репозиториев, присутствующих в учетной записи настроенного пользователя.Значение по умолчанию равно
*.Примеры:
-
elasticsearch,elastic/kibana -
*
-
Владение репозиторием
Если часть "OWNER/" в аргументе репозитория "OWNER/REPO" опущена, она по умолчанию устанавливается равной имени аутентифицирующего пользователя.
В приведённых примерах:
- синхронизированный репозиторий
elasticsearchбудет репозиторием<OWNER>/elasticsearch - синхронизированный репозиторий
kibanaбудет репозиторием, принадлежащим Elastic
Часть "OWNER/" аргумента репозитория "OWNER/REPO" должна быть указана при выборе GitHub App в качестве Authentication method.
Это поле можно обойти с помощью расширенных правил синхронизации.
- Включить SSL
- Включить SSL для экземпляра GitHub.
- Сертификат SSL
-
Сертификат SSL для экземпляра GitHub. Пример:
-----BEGIN CERTIFICATE----- MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT ... 7RhLQyWn2u00L7/9Omw= -----END CERTIFICATE-----
- Включить безопасность уровня документа
- Переключить для включения безопасности уровня документа (DLS). При включении, полные синхронизации будут извлекать списки управления доступом для каждого документа и хранить их в поле
_allow_access_control. DLS доступна только при установкеRepository TypeвOrganization.
Документы и синхронизации
Соединитель синхронизирует следующие объекты и сущности:
- Репозитории
- Запросы на добавление
- Вопросы
- Файлы и папки
Обрабатываются только следующие расширения файлов:
-
.markdown -
.md -
.rst
- Содержимое файлов, размер которых превышает 10 МБ, не будет извлечено. (Подключенные к самообслуживанию коннекторы могут использовать локальную службу извлечения содержимого для обработки больших бинарных файлов.)
- Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому индексу Elasticsearch.
Типы синхронизации
Полные синхронизации по умолчанию поддерживаются всеми коннекторами.
Этот коннектор также поддерживает инкрементные синхронизации.
Правила синхронизации
Основные правила синхронизации одинаковы для всех коннекторов и доступны по умолчанию. Дополнительную информацию можно найти в типах правил синхронизации.
Расширенные правила синхронизации
Для того, чтобы расширенные правила синхронизации вступили в силу, требуется полная синхронизация.
В следующем разделе описываются расширенные правила синхронизации для данного коннектора. Расширенные правила синхронизации определяются с помощью специфичного для источника фрагмента DSL JSON.
В следующих разделах приведены примеры расширенных правил синхронизации для этого коннектора.
Индексирование документов и файлов на основе имени ветки, настроенного через ключ ветки
[
{
"repository": "repo_name",
"filter": {
"branch": "sync-rules-feature"
}
}
] Индексирование документов на основе запроса к вопросам, относящимся к ошибкам, через ключ вопроса
[
{
"repository": "repo_name",
"filter": {
"issue": "is:bug"
}
}
] Индексирование документов на основе запроса к запросам по открытым PR через ключ PR
[
{
"repository": "repo_name",
"filter": {
"pr": "is:open"
}
}
] Индексирование документов и файлов на основе запросов и имени ветки
[
{
"repository": "repo_name",
"filter": {
"issue": "is:bug",
"pr": "is:open",
"branch": "sync-rules-feature"
}
}
] Все документы, извлеченные данным правилом, индексируются независимо от того, был ли документ уже индексирован предыдущим правилом. Это может привести к дублированию документов, но количество индексированных документов будет отличаться в логах. Проверьте индекс Elasticsearch, чтобы получить фактическое количество документов.
Расширенные правила для перекрытия
[
{
"filter": {
"pr": "is:pr is:merged label:auto-backport merged:>=2023-07-20"
},
"repository": "repo_name"
},
{
"filter": {
"pr": "is:pr is:merged label:auto-backport merged:>=2023-07-15"
},
"repository": "repo_name"
}
] Если GitHub App выбран в качестве метода аутентификации, необходимо указать часть "OWNER/" в аргументе репозитория "OWNER/REPO".
Извлечение содержимого
Известные проблемы
В настоящее время для этого коннектора нет известных проблем. Обратитесь к Известным проблемам для получения списка известных проблем всех коннекторов.
Устранение неполадок
См. Устранение неполадок.
Безопасность
См. Безопасность.
Коннектор самообслуживания
Просмотр справки по самоуправляемому коннектору
Доступность и предварительные условия
Этот коннектор доступен в качестве самоуправляемого самоуправляемого коннектора.
Этот самоуправляемый коннектор совместим с версиями Elastic 8.10.0+.
Для использования этого коннектора выполните все требования к самоуправляемому коннектору.
Создание коннектора GitHub
Использование пользовательского интерфейса
Для создания нового коннектора GitHub:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Коннекторы из главного меню или воспользуйтесь полем глобального поиска.
- Следуйте инструкциям по созданию нового GitHub самоуправляемого коннектора.
Использование API
Для создания нового самоуправляемого коннектора GitHub можно использовать Elasticsearch API создания коннектора.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
});
console.log(response); PUT _connector/my-github-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from GitHub",
"service_type": "github"
} Вам также потребуется создать ключ API для использования коннектором.
Пользователю необходимы права кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.
Для создания ключа API для коннектора:
-
Выполните следующую команду, заменив значения, где необходимо. Обратите внимание на значения, возвращаемые из ответа.
resp = client.security.create_api_key( name="connector_name-connector-api-key", role_descriptors={ "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "connector_name-connector-api-key", role_descriptors: { "connector_name-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "connector_name-connector-api-key", "role_descriptors": { "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } - Обновите свой файл
config.ymlсо значением ключа APIencoded.
Подробные сведения обо всех доступных API-интерфейсах коннекторов см. в документации Elasticsearch API.
Использование
Для использования этого коннектора как самоуправляемого коннектора, см. Самоуправляемые коннекторы. Для дополнительных операций с использованием см. Коннекторы UI в Kibana.
Персональный токен доступа GitHub
Настройте персональный токен доступа GitHub для получения данных из GitHub.
Выполните следующие шаги для генерации токена доступа GitHub:
- Перейдите к Настройки GitHub → Настройки разработчика → Персональные токены доступа → Токены (классические).
- Выберите
Generate new token. -
Добавьте примечание и выберите следующие области действия:
-
repo -
user -
read:org
-
- Выберите
Generate tokenи скопируйте токен.
Приложение GitHub
Настройте приложение GitHub для получения данных из GitHub.
Выполните следующие шаги для создания приложения GitHub:
- Перейдите к Настройки GitHub → Настройки разработчика → Приложения GitHub.
- Выберите
New GitHub App. - Добавьте имя и URL-адрес домашней страницы, отмените выбор
Activeв разделеWebhook. - В разделе
PermissionsвыберитеRead-onlyдляCommit statuses,Contents,Issues,MetadataиPull requestsв разделеRepository permissions, выберитеRead-onlyдляMembersв разделеOrganization permissions. - Выберите
Any accountдляWhere can this GitHub App be installed?. - Нажмите
Create GitHub App. - Прокрутите вниз до раздела
Private keysи нажмитеGenerate a private key. - Нажмите
Install Appв верхнем левом углу, выберите организации/личные учетные записи, на которые вы хотите установить приложение GitHub, и нажмитеInstall. - Вы можете установить его на все или выбранные репозитории и нажать
Install.
Совместимость
Поддерживаются как GitHub, так и GitHub Enterprise.
Настройка
При использовании рабочего процесса создания коннектора, эти поля изначально будут использовать настройки по умолчанию, заданные в исходном коде коннектора. Они заданы в определении функции get_default_configuration.
Эти настраиваемые поля будут отображены со своими соответствующими метками в пользовательском интерфейсе Kibana. После подключения вы сможете обновить эти значения в Kibana.
Требуются следующие поля конфигурации:
-
data_source - GitHub Cloud или GitHub Server.
-
host - URL экземпляра GitHub Server. (Только GitHub Server)
-
auth_method - Метод аутентификации экземпляра GitHub. Переключайтесь между
Personal access tokenиGitHub App. -
token - Персональный токен доступа GitHub для аутентификации экземпляра GitHub. Это поле доступно только для метода аутентификации
Personal access token. -
repo_type - Переключайтесь между
OrganizationиOther. Обратите внимание, что безопасность на уровне документов (DLS) доступна только для репозиториевOrganization. -
org_name - Название организации для извлечения данных. Это поле доступно только когда
Authentication methodустановлено наPersonal access tokenиRepository Typeустановлено наOrganization. -
app_id - ID приложения GitHub. Это поле доступно только когда
Authentication methodустановлено наGitHub App. -
private_key - Закрытый ключ, сгенерированный для приложения GitHub. Это поле доступно только когда
Authentication methodустановлено наGitHub App. -
repositories -
Список репозиториев для извлечения данных из экземпляра GitHub, разделённый запятыми. Если значение равно
*, коннектор извлечёт данные из всех репозиториев, присутствующих в аккаунте настроенного пользователя.Значение по умолчанию —
*.Примеры:
-
elasticsearch,elastic/kibana -
*
-
Владение репозиторием
Если часть "OWNER/" в аргументе репозитория "OWNER/REPO" опущена, она по умолчанию равна имени аутентифицированного пользователя.
В предоставленных примерах:
- репозиторий
elasticsearch, который будет синхронизирован, будет репозиторием<OWNER>/elasticsearch - репозиторий
kibana, который будет синхронизирован, будет репозиторием, принадлежащим Elastic
Часть "OWNER/" в аргументе репозитория "OWNER/REPO" должна быть указана, когда GitHub App выбрано в качестве Authentication method.
Это поле можно обойти с помощью расширенных правил синхронизации.
-
ssl_enabled - Включена ли проверка SSL. Значение по умолчанию —
False. -
ssl_ca -
Содержимое сертификата SSL. Примечание: если
ssl_enabledравноFalse, значение в этом поле игнорируется. Пример сертификата:-----BEGIN CERTIFICATE----- MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT ... 7RhLQyWn2u00L7/9Omw= -----END CERTIFICATE-----
-
use_document_level_security - Включить безопасность на уровне документов (DLS). При включении полные синхронизации извлекут списки управления доступом для каждого документа и сохранят их в поле
_allow_access_control. DLS доступен только при установкеRepository Typeна значениеOrganization. -
retry_count - Число попыток повторного подключения после неудачного запроса к GitHub. Значение по умолчанию —
3. -
use_text_extraction_service - Требует отдельной установки сервиса Elastic Text Extraction Service. Требует, чтобы настройки конвейера отключали извлечение текста. Значение по умолчанию —
False.
Развертывание с помощью Docker
Вы можете развернуть коннектор GitHub как самоуправляемый коннектор с помощью Docker. Следуйте этим инструкциям.
Шаг 1: Скачать файл образца конфигурации
Скачайте файл образца конфигурации. Вы можете сделать это вручную или выполнить следующую команду:
curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml
Не забудьте обновить значение аргумента --output, если имя вашей директории отличается или вы хотите использовать другое имя файла конфигурации.
Шаг 2: Обновить файл конфигурации для вашего подключенного компонента (self-managed)
Обновите файл конфигурации следующими настройками, чтобы он соответствовал вашей среде:
-
elasticsearch.host -
elasticsearch.api_key -
connectors
Если вы запускаете службу подключения к контейнеризированной версии Elasticsearch и Kibana, файл конфигурации будет выглядеть так:
# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>
connectors:
-
connector_id: <CONNECTOR_ID_FROM_KIBANA>
service_type: github
api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead Использование метода аутентификации elasticsearch.api_key рекомендуется. Однако вы также можете использовать elasticsearch.username и elasticsearch.password для аутентификации с вашим экземпляром Elasticsearch.
Примечание: Вы можете изменить другие значения по умолчанию, просто раскомментировав соответствующие настройки в файле конфигурации и изменив их значения.
Шаг 3: Запустить Docker образ
Запустите Docker образ с помощью службы подключения, используя следующую команду:
docker run \ -v ~/connectors-config:/config \ --network "elastic" \ --tty \ --rm \ docker.elastic.co/enterprise-search/elastic-connectors:8.17.3 \ /app/bin/elastic-ingest \ -c /config/config.yml
Дополнительные сведения см. в DOCKER.md в репозитории elastic/connectors.
Найдите все доступные Docker образы в официальном репозитории.
У нас также есть вариант быстрого запуска с использованием Docker Compose, позволяющий сразу запустить все необходимые службы: Elasticsearch, Kibana и службу подключения. Дополнительную информацию см. в README в репозитории elastic/connectors.
Документы и синхронизация
Подключение синхронизирует следующие объекты и сущности:
- Репозитории
- Запросы на вытягивание (Pull Requests)
- Задачи (Issues)
- Файлы и папки
Обрабатываются только следующие расширения файлов:
-
.markdown -
.md -
.rst
- Содержимое файлов размером более 10 МБ не будет извлечено.
- Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому индексу Elasticsearch.
Типы синхронизации
Полная синхронизация поддерживается по умолчанию для всех подключений.
Это подключение также поддерживает инкрементную синхронизацию.
Правила синхронизации
Базовые правила синхронизации одинаковы для всех подключений и доступны по умолчанию. Подробнее см. Типы правил синхронизации.
Расширенные правила синхронизации
Для вступления в силу расширенных правил синхронизации требуется полная синхронизация.
В этом разделе описаны расширенные правила синхронизации для этого подключения. Расширенные правила синхронизации определяются с помощью фрагмента JSON DSL, специфичного для источника.
В следующих разделах приведены примеры расширенных правил синхронизации для этого подключения.
Индексирование документа и файлов на основе имени ветки, настроенного через ключ ветки
[
{
"repository": "repo_name",
"filter": {
"branch": "sync-rules-feature"
}
}
] Индексирование документа на основе запроса к задачам, относящимся к ошибкам, через ключ задачи
[
{
"repository": "repo_name",
"filter": {
"issue": "is:bug"
}
}
] Индексирование документа на основе запроса к PR, относящимся к открытым PR, через ключ PR
[
{
"repository": "repo_name",
"filter": {
"pr": "is:open"
}
}
] Индексирование документа и файлов на основе запросов и имени ветки
[
{
"repository": "repo_name",
"filter": {
"issue": "is:bug",
"pr": "is:open",
"branch": "sync-rules-feature"
}
}
] Все документы, полученные по данному правилу, индексируются независимо от того, был ли документ уже проиндексирован по предыдущему правилу. Это может привести к дублированию документов, но количество индексированных документов будет отличаться в логах. Проверьте индекс Elasticsearch для фактического количества документов.
Расширенные правила для пересечений
[
{
"filter": {
"pr": "is:pr is:merged label:auto-backport merged:>=2023-07-20"
},
"repository": "repo_name"
},
{
"filter": {
"pr": "is:pr is:merged label:auto-backport merged:>=2023-07-15"
},
"repository": "repo_name"
}
] Если GitHub App выбран в качестве метода аутентификации, необходимо предоставить часть "OWNER/" в аргументе репозитория "OWNER/REPO".
Извлечение содержимого
Операции с подключением (self-managed)
Тестирование от начала до конца
Фреймворк подключения позволяет операторам запускать функциональные тесты на реальном источнике данных. Дополнительные сведения см. в тестировании подключения.
Для выполнения E2E тестирования подключения к GitHub выполните следующую команду:
$ make ftest NAME=github
Для более быстрых тестов добавьте флаг DATA_SIZE=small:
make ftest NAME=github DATA_SIZE=small
Известные проблемы
В настоящее время для этого подключения нет известных проблем. Список известных проблем для всех подключений см. в Известных проблемах.
Устранение неполадок
См. Устранение неполадок.
Безопасность
См. Безопасность.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/es-connectors-github.html