Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›Ввод контента с помощью подключений Elastic ›Извлечение, фильтрация и преобразование контента

Извлечение контента

Подключения используют процессор вставки вложений Elastic для извлечения содержимого файлов. Процессор извлекает файлы, используя библиотеку извлечения текста Apache Tika. Логика извлечения контента определена в utils.py.

Хотя первоначально предназначен для форматов PDF и Microsoft Office, вы можете использовать любой из поддерживаемых форматов.

Enterprise Search использует конвейер ввода Elasticsearch для обеспечения извлечения двоичного контента веб-сканером. По умолчанию конвейер, ent-search-generic-ingestion, автоматически создаётся при первом запуске Enterprise Search.

Вы можете просмотреть этот конвейер в Kibana. Настройка использования вашего конвейера также является вариантом. См. Конвейеры ввода для индексов поиска.

Для сложных случаев использования можно использовать самостоятельно размещаемую службу извлечения для извлечения контента из файлов размером более 10 МБ.

Поддерживаемые типы файлов

Поддерживаются следующие типы файлов:

  • .txt
  • .py
  • .rst
  • .html
  • .markdown
  • .json
  • .xml
  • .csv
  • .md
  • .ppt
  • .rtf
  • .docx
  • .odt
  • .xls
  • .xlsx
  • .rb
  • .paper
  • .sh
  • .pptx
  • .pdf
  • .doc

Процессор вставки вложений не поддерживает сжатые файлы, например, архивный файл, содержащий набор PDF-файлов. Распакуйте архивный файл и предоставьте отдельные несжатые файлы для обработки подключением.

Служба извлечения

В настоящее время извлечение контента из больших файлов через службу извлечения доступно для подмножества наших самоуправляемых подключений. Оно недоступно для управляемых Elastic подключений, работающих в Elastic Cloud. Эта функция находится в стадии бета-тестирования.

Стандартное извлечение контента выполняется через процессор вложений, через конвейеры ввода Elasticsearch. Самоуправляемое подключение ограничивает размер файлов для извлечения конвейером до 10 МБ на файл (Elasticsearch также имеет жёсткий лимит в 100 МБ на файл).

Для случаев использования, требующих извлечения контента из файлов размером более этих пределов, для самоуправляемых подключений можно использовать самостоятельно размещаемую службу извлечения. Вместо отправки файла в качестве attachment в Elasticsearch, содержимое файла извлекается на периферии службой извлечения перед вводом. Извлечённый текст затем включается в качестве поля body документа при его вводе.

Чтобы использовать эту функцию, вам необходимо выполнить следующие действия:

  • Запустить самостоятельно размещаемую службу извлечения контента
  • Добавить необходимые параметры конфигурации
  • Установите значение настраиваемого поля use_text_extraction_service на true

Код службы извлечения данных теперь доступен в этом общедоступном репозитории: https://github.com/elastic/data-extraction-service.

Доступные подключения

Локальное извлечение контента доступно для следующих самоуправляемых подключений:

  • Azure Blob Storage
  • Confluence
  • Dropbox
  • GitHub
  • Google Cloud Storage
  • Google Drive
  • Jira
  • Сетевой диск
  • OneDrive
  • Outlook
  • S3
  • Salesforce
  • ServiceNow
  • SharePoint Online
  • SharePoint Server
  • Zoom
Запуск службы извлечения

Самостоятельно размещаемое извлечение контента обрабатывается отдельной службой извлечения.

Версии службы извлечения не соответствуют стеку Elastic. Для версий после 8.11.x (включая 8.17.3) следует использовать версию службы извлечения 0.3.x.

Вы можете запустить службу с помощью следующей команды:

$ docker run \
  -p 8090:8090 \
  -it \
  --name extraction-service \
  docker.elastic.co/integrations/data-extraction-service:$EXTRACTION_SERVICE_VERSION
Настройка службы извлечения

Вы можете разрешить вашему самоуправляемому подключению использовать самостоятельно размещённую службу извлечения, добавив необходимую конфигурацию. Самоуправляемое подключение определяет, включена ли служба извлечения, по наличию этих полей в файле конфигурации.

  1. Откройте файл конфигурации config.yml в текстовом редакторе по вашему выбору.
  2. Добавьте следующие поля. Их можно добавить в любом месте файла, при условии, что они начинаются на корневом уровне.
# data-extraction-service settings
extraction_service:
  host: http://localhost:8090

Защита паролем отсутствует между самоуправляемым подключением и службой извлечения. Самостоятельно размещаемое извлечение следует использовать только в том случае, если две службы работают в одной сети и за одним брандмауэром.

Поле Описание

host

Конечная точка службы извлечения. http://localhost:8090 можно использовать, если она запущена на одном сервере с вашим самоуправляемым подключением.

Самоуправляемое подключение выполнит предварительную проверку настроенного значения host при запуске. В лог будет выведено следующее сообщение, если служба извлечения данных найдена и работает нормально.

Data extraction service found at <HOST>.

Если вы не видите этот лог при запуске, обратитесь к устранению неполадок с самостоятельно размещаемой службой извлечения контента.

Дополнительная настройка

В файл конфигурации можно включить следующие поля. Они являются необязательными и будут использовать значения по умолчанию, если не указаны.

# data-extraction-service settings
extraction_service:
  host: http://localhost:8090
  timeout: 30
  use_file_pointers: false
  stream_chunk_size: 65536
  shared_volume_dir: '/app/files'
Поле расширенных настроек Описание

timeout

Предельное время ожидания в секундах для извлечения содержимого. По умолчанию равно 30, если не задано. Увеличьте это значение, если у вас очень большие файлы, которые вызывают временные ограничения при извлечении содержимого. В случае превышения времени ожидания поле body индексируемого документа будет пустой строкой.

use_file_pointers

Использовать ли указатели на файлы вместо отправки файлов в службу извлечения. По умолчанию false. Обратитесь к использованию указателей на файлы для получения дополнительной информации об этом параметре.

stream_chunk_size

Размер кусков файлов для потоковой передачи в службу извлечения в байтах. По умолчанию 65536 (64 КБ). Применимо только, если use_file_pointers равно false. Увеличение этого значения может ускорить работу коннектора, но также увеличит использование памяти.

shared_volume_dir

Общий том, из которого служба извлечения данных будет извлекать файлы. По умолчанию /app/files. Применимо только, если use_file_pointers равно true.

Использование указателей на файлы

Самостоятельно размещенную службу извлечения можно настроить на использование указателей на файлы вместо отправки файлов через запросы HTTP. Указатели на файлы быстрее, чем отправка файлов, и потребляют меньше памяти, но требуют, чтобы коннекторный фреймворк и служба извлечения могли совместно использовать файловую систему. Это можно настроить как для контейнеризованного, так и для неконтейнеризованного самохостингового коннектора.

Настройка для неконтейнеризованных самохостинговых коннекторов

Если вы используете неконтейнеризованную версию самохостингового коннектора, вам необходимо определить локальный каталог, в который будут загружаться файлы для извлечения. Он может находиться где угодно в вашей файловой системе. Имейте в виду, что самохостинговый коннектор будет загружать файлы с случайными именами в этот каталог, поэтому есть вероятность перезаписи любых уже существующих файлов. По этой причине рекомендуется использовать выделенный каталог для самохостингового извлечения.

Пример

  1. В этом примере мы будем использовать /app/files как локальный каталог, так и каталог контейнера. При запуске контейнера службы извлечения вы можете смонтировать каталог как том, используя опцию командной строки -v /app/files:/app/files.

    $ docker run \
      -p 8090:8090 \
      -it \
      -v /app/files:/app/files \
      --name extraction-service \
      docker.elastic.co/integrations/data-extraction-service:$EXTRACTION_SERVICE_VERSION

    Из-за того, как эта функция работает в кодовой базе для неконтейнеризованных установок, локальный путь к файлу и путь к файлу в контейнере Docker должны быть идентичны. Например, если используется /app/files, вы должны смонтировать каталог как -v /app/files:/app/files. Если один из каталогов отличается, самохостинговый коннектор не сможет предоставить точный указатель на файл для службы извлечения. Это не является фактором при использовании контейнеризованного самохостингового коннектора.

  2. Затем, перед запуском самохостингового коннектора, убедитесь, что вы обновили файл конфигурации с правильной информацией.

    # data-extraction-service settings
    extraction_service:
      host: http://localhost:8090
      use_file_pointers: true
      shared_volume_dir: '/app/files'
  3. Затем всё, что осталось, это запустить самохостинговый коннектор и выполнить синхронизацию. Если вы столкнетесь с неожиданными ошибками, обратитесь к отладке самохостинговой службы извлечения содержимого.
Настройка для контейнеризованных самохостинговых коннекторов

При использовании самохостингового извлечения из контейнеризованного самохостингового коннектора требуется несколько дополнительных шагов помимо запуска самохостингового коннектора в Docker.

  • Самостоятельно размещенной службе извлечения потребуется общая сеть с самохостинговым коннектором и Elasticsearch.
  • Самохостинговый коннектор и служба извлечения также должны иметь общий том. Вы можете выбрать каталог внутри этих контейнеров Docker, на который будет смонтирован том, но каталог должен быть одинаковым для обоих контейнеров Docker.

Пример

  1. Сначала настройте том для совместного использования двух контейнеров Docker. Это будет место, куда файлы будут загружаться и извлекаться.

    $ docker volume create --name extraction-service-volume
  2. Если вы еще не настроили сеть, вы можете создать ее сейчас.

    $ docker network create elastic
  3. Укажите имя тома Docker и сеть в качестве аргументов при запуске службы извлечения. В этом примере мы будем использовать /app/files в качестве каталога контейнера.

    $ docker run \
      -p 8090:8090 \
      -it \
      -v extraction-service-volume:/app/files \
      --network "elastic" \
      --name extraction-service \
      docker.elastic.co/integrations/data-extraction-service:$EXTRACTION_SERVICE_VERSION
  4. Далее, вы можете следовать инструкциям по запуску самохостингового коннектора в Docker до шага 4. Update the configuration file for your self-managed connector. При настройке конфигурации обязательно добавьте следующие параметры для самостоятельно размещенной службы извлечения содержимого. Обратите внимание, что host теперь будет ссылаться на внутренний конечный пункт Docker вместо localhost.

    # data-extraction-service settings
    extraction_service:
      host: http://host.docker.internal:8090
      use_file_pointers: true
      shared_volume_dir: '/app/files'
  5. Далее, на шаге 5. Run the Docker image, нам нужно только добавить наш новый общий том в команду запуска, используя -v extraction-service-volume:/app/files.

    $ docker run \
      -v ~/connectors-config:/config \
      -v extraction-service-volume:/app/files \
      --network "elastic" \
      --tty \
      --rm \
      docker.elastic.co/enterprise-search/elastic-connectors:$CONNECTOR_CLIENT_VERSION \
      /app/bin/elastic-ingest \
      -c /config/config.yml
  6. Теперь контейнеры Docker самохостингового коннектора и службы извлечения должны быть настроены для совместного использования файлов. Запустите тестовую синхронизацию, чтобы убедиться, что все настроено правильно. Если вы столкнетесь с неожиданными ошибками, обратитесь к отладке самохостинговой службы извлечения содержимого.
Логи службы самохостингового извлечения

Служба извлечения создает два разных файла журналов, которые могут быть информативны при устранении неполадок. Они сохраняются по следующим путям внутри контейнера Docker:

  • /var/log/openresty.log для журналов трафика запросов
  • /var/log/tika.log для журналов тикасервера jar

Журналы можно просмотреть снаружи Docker, объединив docker exec с командой tail.

$ docker exec extraction-service /bin/sh -c "tail /var/log/openresty.log"
$ docker exec extraction-service /bin/sh -c "tail /var/log/tika.log"
Отладка самохостинговой службы извлечения

При использовании самохостинговой службы извлечения могут появиться следующие предупреждающие сообщения. За каждым сообщением в этом разделе следует описание возможной причины и предлагаемые решения.

Extraction service is not configured, skipping its preflight check.

В файле конфигурации отсутствует поле extraction_service.host. Если вы хотите использовать эту службу, проверьте, что конфигурация отформатирована правильно и что требуемое поле присутствует.

Data extraction service found at <HOST>, but health-check returned <RESPONSE STATUS>.

Конечная точка /ping вернула не-200 ответ. Это может означать, что служба извлечения не работает и может потребоваться перезапуск, или что заданная extraction_service.host неверна. Дополнительную информацию о произошедшем можно найти в журналах службы извлечения данных.

Expected to find a running instance of data extraction service at <HOST> but failed. <ERROR>.

Проверка работоспособности вернула либо ошибку таймаута, либо ошибку подключения клиента.

  • Ошибка таймаута может быть вызвана отсутствием запуска службы извлечения или невозможностью доступа к ней из заданного в файле конфигурации host.
  • Ошибка подключения к серверу — это внутренняя ошибка службы извлечения. Вам необходимо изучить журналы службы извлечения данных.
Extraction service has been initialised but no extraction service configuration was found. No text will be extracted for this sync.

Вы включили самохостинговую службу извлечения для коннектора, но в файле конфигурации отсутствует поле extraction_service.host. Проверьте, что конфигурация отформатирована правильно и что требуемое поле присутствует.

Extraction service could not parse <FILENAME>. Status: <RESPONSE STATUS>; <ERROR NAME>: <ERROR MESSAGE>.

Это предупреждение будет отображаться каждый раз, когда файл не может быть извлечен. Как правило, <ERROR MESSAGE> предоставит объяснение причин неудачи извлечения. Обратитесь в службу поддержки, если сообщение не является понятным. В случае неудачи извлечения файла он будет индексироваться пустой строкой в поле body.

© 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-content-extraction.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API