Задать вопрос
@My1Name

Можно ли использовать Elasticsearch для поиска в файлах?

Всем доброго времени суток. Подскажите пожалуйста, можно ли использовать Elasticsearch для поиска в файлах? Например, у меня есть динамический файл размером 100Mb с текстовым содержанием следующего вида:
<!--START-block-1-->
тут какой-то текст в котором нужно искать
<!--END-block-1-->
<!--START-block-2-->
тут какой-то текст в котором нужно искать
<!--END-block-2-->

Я знаю как осуществить поиск в таком файле с помощью JAVA (core) и вернуть соответствующий текстовый блок при 100% совпадении искомого слова или словосочетания. Однако, возможности Elasticsearch гораздо более привлекательны по описаниям в интернете... Он может игнорировать ошибки в словах, и даже искать транслитерацию. Можно ли использовать Elasticsearch для такой задачи? И если можно, то как его подключить и настроить (желательно, через добавление jar-файла в Spring-boot проект и дальнейшей MVC сборки)?
  • Вопрос задан
  • 218 просмотров
Подписаться 1 Средний 10 комментариев
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Можно ли использовать Elasticsearch для поиска в файлах?
Elasticsearch не предназначен для индексирования файлов непосредственно. Поскольку используется SDK для работы через API, при создании документов с текстом. Таким образом, они (документы) индексируются и доступны для последующего поиска.
Кроме того, Elasticsearch плохо работает в случае частых обновлений, поскольку ему надо часто обновлять кэш, и это приводит к дополнительным накладным расходам. Короче, Elasticsearch - это перебор для данной задачи.

Не понятно зачем используется файл, когда можно использовать СУБД. Например, RediSearch (из Redis Stack) - позволяет производить полнотекстовый поиск, включая русский.
Так, вместо большого файла приложение должно работать с СУБД, храня единицы документов (то, что в вашей терминологии называется блоком).

В реальности файл гораздо меньше. Он где-то 10Мб (Max) и перезаписывается подобно стеку: Первый зашёл - первый ушёл. Дозапись в конец файла с фиксированным количеством текстовых блоков.
Что касается очереди FIFO, то она поддерживается в Redis. В ней можно хранить идентификаторы документов, подлежащих обработке.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы