1

Я использую пакет NodeJS elasticsearch для взаимодействия с ElasticSearch. У меня есть документ с полем file. Я хочу иметь возможность загружать файл в индекс, но единственный способ, который я нашел, - использовать плагин elasticsearch-mapper-attachment.Как индексировать двоичный файл в ElasticSearch без использования Base64

Проблема в том, что если я его использую, я должен загрузить весь файл в память, закодировать его на Base64 и передать String в ElasticSearch.

Я бы хотел, чтобы передать Stream в ElasticSearch (ссылка на любой двоичный файл: pdf, xls, doc, ppt).

+0

ES не сделает это за вас. Насколько велики ваши файлы? – Val

+0

Ммм, так что единственный способ - с base64 string? Я не уверен в размере файла. Скажем, 1 ГБ, но если 10000 пользователей загрузили большой файл, мне пришлось бы много загружать в память. – diugalde

+0

Вы хотите, чтобы это приложение просто хранилось по индексу или фактически индексировалось и находилось в поиске? – Andrey

ответ

2

Плагин elasticsearch-mapper-attachment дополняет загруженный двоичный файл и извлекает текст для дальнейшей индексации с использованием встроенного экстрактора Tika.

Что делают некоторые приложения (например, Aspire Search Technology) - они запускают двоичные файлы через Tika локально, извлекают текст и загружают именно этот текст с документами для индексации.

Возможно, это не тот ответ, который вы ищете, но у вас действительно есть только два варианта: используйте плагин Elastic (и конвертируйте двоичный код в base64 в код yoru, прежде чем загружать документ в эластичный), или проанализируйте двоичный файл и извлеките текст в вашем коде, а затем загрузите только этот текст в эластичный. Быстрее проще, последний дает вам больше контроля над процессом.

+0

Использование Tika в моем приложении выходит за рамки. Я нашел связанную с этим проблему: https://github.com/elastic/elasticsearch-mapper-attachments/issues/146 По-видимому, они не хотят потреблять файлы из внешних источников данных. – diugalde

+0

@ Andrey, если я использую Tika и извлекаю содержимое документа в виде текста, тогда загрузка этого текста в эластичное будет иметь какие-то ограничения? Я имею в виду, если файл pdf будет огромным, тогда возникнет какая-то проблема? – AKS

+0

@AKS - стандартный размер документа ES размером 2 ГБ на документ будет применяться, поэтому, если ваш PDF + все остальные поля меньше 2 ГБ, вы хороши – Andrey

Смежные вопросы