Рубрика «elasticsearch» - 13

Низкая скорость поисковых запросов

Работая над поисковым движком по социальной информации (ark.com), мы остановили свой выбор на Elasticsearch, так как по отзывам он был очень легок в настройке и использовании, имел отличные поисковые возможности и, в целом, выглядел как манна небесная. Так оно и было до тех пор, пока наш индекс не вырос до более-менее приличных размером ~ 1 миллиарда документов, размер с учетом реплик уже перевалил за 1,5 ТБ.

Даже банальный Term query мог занять десятки секунд. Документации по ES не так много, как хотелось бы, а гуглинг данного вопроса выдавал результаты 2х-летней давности по совсем не актуальным версиям нашего поискового движка (мы работаем с 0.90.13 — что тоже не достаточно старая вещь, но мы не можем позволить себе опустить весь кластер, обновить его, и запустить заново на текущий момент — только роллинг рестарты).

Низкая скорость индексации

Вторая проблема — мы индексируем больше документов в секунду (порядка 100к), чем Elasticsearch может обрабатывать. Тайм-ауты, огромная нагрузка на Write IO, очереди из процессов в 400 единиц. Все выглядит очень страшно, когда смотришь на это в Marvel.

Как решать эти проблемы — под катом
Читать полностью »

Периодически стал замечать, что не могу найти нужную статью, которую видел раньше.
Вроде бы все просто — по запомнившимся сведениям статью можно легко найти. Но нет. Поиск в Google часто ничего не дает, т.к. я помню только обрывки содержимого, и поисковая выдача содержит много шума.

Актуально это и на работе. Для хранения и обмена полезными ссылками на разные Github проекты, статьи, сервисы раньше мы использовали Skype, но сейчас стали использовать для этих целей Yammer. Оба этих способа имеют свои недостатки. Основной недостаток Skype для обмена ссылками — это сложность поиска по истории. Проблема Yammer — он не индексирует текст статьи, а только сниппет. Ни один из них не имеет возможности автоматической категоризации.

В свободное время я написал приложение, специально заточенное для поиска статей. Его возможности:

  • добавление статьи одной кнопкой из браузера
  • автоматическая категоризация
  • русская и английская морфология
  • просмотр текста статьи
  • операторы поискового запроса

Читать полностью »

Наша компания довольно давно занимается разработкой больших веб-приложений на Python / Django. В рунете крайне мало информации об этом замечательном языке программирования и фремворке на его основе. Мы решили исправить эту ошибку и рассказать о популярных высоконагруженных сайтах на этой технологии, а также дать много интересных технических подробностей. Для удобства сравнения сайтов между собой мы приводим еще и немного статистики к каждому из проектов. В целом сайтов на Python / Django, конечно, очень много в мире, мы охватим только наиболее интересные по нашему мнению.

Небольшая таблица известных проектов (на основе данных http://builtwith.com/), кликабельно:
Читать полностью »

Ссылка на подкаст: http://rubynoname.ru/posts/2014/S06E03.html
Читать полностью »

Многие слышали о высокоуровневом поисковом сервере ElasticSearch, но не все знают. что многие используют его не совсем по прямому назначению. Речь идет о реалтайм-аналитике различных структурированных и не очень данных.

Эта статья также назрела ввиду того, что многие крупные интернет-проекты рунета в 2014 году получили письма счастья от Google Analytics с предложением заплатить $150 000 за возможность использовать их продукт. Я лично считаю, что ничего плохого в том, чтобы оплатить труд программистов и администраторов нет. Но при этом это довольно серьезные инвестиции, и, может, вложения в собственную инфраструктуру и специалистов, даст большую гибкость в дальнейшем.

Аналитика в ElasticSearch основана на полнотекстовом поиске и фасетах. Фасеты в поиске — это некая агрегация по определенному признаку. Вы часто сталкивались с фасетами-фильтрами в интернет-магазинах: в левой или правой колонке есть уточняющие галочки. Ниже пример тестового фасетного поиска у нас на главной странице http://indexisto.com/.

ElasticSearch 1.0 — новые возможности аналитики

Буквально неделю назад вышла стабильная версия поискового сервера ElasticSearch 1.0, в которой разработчики настолько серьезно поработали над фасетами, что даже назвали их Aggregation.

Так как тема еще не освещалась на Хабре, я хочу рассказать, что из себя представляют аггрегации в ElasticSearch, какие возможности открываются и есть ли жизнь без Hadoop.
Читать полностью »

Мы живем во времена, когда кажется, что все просто и все есть. Нужно сделать масштабируемый проект — используем MongoDB, нужна очередь — вот RabbitMQ, нужно поднять функционал поиска — раз плюнуть: ставим Sphinx, Solr, ElasticSearch (нужное подчеркнуть).

Но здесь лишь доля правды: — при определенном везении можно поставить нужный сервер и все зашевелится. Загвоздка с поиском состоит в том, что пользователи уже порядком привыкли к высокой планке, которую задают «большие ребята», а тот поиск, что поднимется у вас «из коробки», будет явно недотягивать. И если очередь или базу данных вы можете добить железом прежде, чем будете оптимизировать, то поиск железом не добьешь.

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

Мы посмотрим, как с помощью нашего проекта http://indexisto.com сделан поиск на сайте http://maximonline.ru и сравним его с тем, что есть на других сайтах.

Для начала несколько примеров. Возьмем запрос «Битва за Лос Анджелес» и представим, что его напишут неправильно «Лос Анжелес биттва». Как видно, пользователь не знает точно, как пишется имя города, и забыл, как звучит название фильма, а также у него дрогнула рука в конце на слове «битва».

Выберем достойные проекты рунета, в которых есть префиксный поиск, и попробуем поискать там наш запрос:

Проект Правильный запрос Неправильный запрос
afisha.ru Как это сделано: префиксный поиск
все ОК
Как это сделано: префиксный поиск
Не найдено
ivi.ru Как это сделано: префиксный поиск
все ОК
Как это сделано: префиксный поиск
Не найдено
vk.com Как это сделано: префиксный поиск
все ОК
Как это сделано: префиксный поиск
Не найдено
maximonline.ru Как это сделано: префиксный поиск
все ОК
Как это сделано: префиксный поиск
все ОК

Читать полностью »

Github полностью переработал поиск

В среду, 23 января, Github запустил новый, значительно переработанный и улучшенный поиск кода, репозиториев и разработчиков. Теперь инфраструктуру обеспечивает кластер серверов ElasticSearch, который индексирует весь добавляемый код на лету, заметно переработан интерфейс, и, самое главное, есть много функциональных улучшений.
Читать полностью »

Приветствую.

Нет так давно передо мной встала задача пробежаться по старым логам apache. Надо было сделать выборку по нескольким IP адресам, отыскать некоторые аномалии и попытки SQL-injection'ов. Логов было не так много, порядка миллиона строк и можно было спокойно всё сделать стандартным набором grap-awk-uniq-wc итд.

Поскольку я уже какое-то (больше года) время пользуюсь связкой Logstash-Elasticsearch-Kibana для анализа-просмотра всевозможных логов, то решил ей воспользоваться и в данной ситуации.

Краткое описание основных компонентов системы.

Logstash — бесплатная open-source программа на java для сбора и нормализации логов. Может принимать логи либо с локальных файлов, либо через tcp/udp порты. На момент написания статьи разных входных (input) фильтров насчитывается 26. Есть даже входной модуль, для сбора сообщений из twitter'а или irc.

Elasticsearch — бесплатный open-source поисковый сервер основанный на Apache Lucene. Быстрый, легко настраиваемый и очень масштабируемый.

Kibana — веб-интерфейс написанный на ruby, для отображения данных из Elasticsearch. Простая настройка, но множество функций — поиск, графики, stream.

Читать полностью »

Вместо вступления

Подкаст вышел с опозданием, поскольку мы ждали, когда мне вернут микрофон. На момент записи его так и не отдали, поэтому меня слышно не очень хорошо, выводы сделали, своих ошибок повторять не будем.
Таинственный образом с хабра пропал «подкаст», поэтому слушайте нас на rpod-е.

Новости

Вышли Rails 3.0.12, 3.1.4, 3.2.2
Товарищ Константин, О времени и о себе. Кстати, упоминаемая в интервью книжица «Sinatra: Up and Running» — тоже очень ничего. Можно рекомендовать как академическое пособие для желающих разобраться, как правильно готовить на Руби web-(и прочее)-middleware и все такое.
Деплой как в Heroku
4 марта вышло обновление на Github, связанное с массовыми уязвимостями на этом сайте
6 марта вышел Vagrant версии 1.0
7 марта вышел Bundler 1.1
Lightrail — легкий rails-стэк для json приложений
Ruby 2.0 Enumerable::Lazy
Except.io — сервис, аналогичный airbrake.io

Обсуждение

Системы полнотекстового поиска

Sphinx — система полнотекстового поиска от Андрея Аксенова
Full Text Search в Postgresql — система полнотекстового поиска, встроенная в Postgresql
Elasticsearch
Solr — сервер полнотекстового поиска от Apache Foundation
Lucene — движок полнотекствого поиска от Apache Foundation

Срывая покровы с Ивана Самсонова

Профиль Ивана на Моем Круге
Профиль Ивана на LinkedIn
Твиттер Ивана
Wheely — компания, где сейчас работает Иван
РГГУ — а здесь Иван сейчас учится

Контакты RubyNoName подкаста

Наш твиттер
Email для предложенией
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js