У нас в проекте в 2-х проектах активно используется Сфинкс и Эластик. Всмысле не оба в обоих, а в одном один в другом другой. Вот как бы хочется причесать все это, привести к единообразию.
Посему хочу осведомиться, какой индексатор выбрали бы вы? Понимаю что вопрос странный и как бы сам должен на него отвечать, ибо работал с обоими. Но мое мнение в данном вопросе предвзятое, так как больше нравится ES потому что со сфинксом в свое время наелись по полной, но не из за того что он такой кривой, а потому что мы были "зелеными" в этом вопросе.
Хотелось бы объективного мнения - по типу, в А есть фича А(а) которой нет в Б, или фича Б(а) работает быстрее чем А(а).
Вот такой вот странный вопрос.
А ну да, собственно ТТХ данных - порядка 10М записей, активное изменения порядка 10% записей ежедневно. Индексы в обоих системах используются не только для реализации full-text поиска.
У сфинкса есть ограничение на RT индексы, поэтому надо чаще переиндексировать всё, придумывать варианты с дельта индексами итп.
Если данные меняются часто и нужен реалтайм, то лучше юзайте эластик.
@Nc_Soft Да как раз все горестные воспоминания связанные со сфинксом как раз из за таких велосипедов. Подумалось что они за 2 года как то разрешили вопрос велосипедостроения, оказывается не особо.
С ES тоже не все гладко - жрет память как конь, и есть проблемы со стабильностью, что в сфинксе не наблюдается. Если первая проблема то особо не проблема, вторая чуть более насущная, но скорее всего разрешимая более гуманной системой внесения обновлений.
@Nc_Soft расскажите, с какими ограничениями RT-индексов вы сталкивались на практике. что приводило вас к "придумыванию вариантов"? Не холивара ради, но истины для.
@portfelio Ну самое сильное воспоминание было от жуткой низкоуровневости sph, отсутствие нормального клиента для питона и отвратительной, на тот момент, документации. Но повторяюсь - это абсолютно не обективно, так как нам пришлось работать с тем что нам дали. Во втором проекте уже осознанно сделали выбор в сторону ES. Вот еще был батхерт когда увидили скорость работы xmlpipe2 протокола.
@portfelio Вот еще что вспомнилось.
У нас индекс товаров в проекте более 10М записей. Понятно что каждый день были новые и измененные записи. Вся эта балалайка была реализована как: основной индекс который делался на какой-то момент врмени, все что было дополнительное загонялось в дельта индексы. По каким то причинам данные из дельты могли становиться временно недоступными. Чтобы это компенсировать раз в неделю по крону запускался основной реиндекс товаров, который занимал, насколько я помню, от 6 до 12 часов, при этом создавал нехилый оверхед на сервере. Городили master-slave реплику БД чтобы можно было с одной работать продакшен серверу, второй чисто для индексации. Понятно что все это не проблемы SPH, а проблемы реализации. Но с ES как то проще, дружелюбнее он. А sph у меня все еще вызывает ассоцииации с совецким секретным танком.
zxmd:
Странно.
Как раз 5 лет назад у нас индексы работали именно на Sphinx и на Python.
НИКАКИХ проблем.
Кроме неявной диагностики ошибок при неправильном формате входных данных
Примущества сфинкса - быстрая скорость индексации. Если надо быстро проиндексировать 10 млн документов, это плюс. Сфинкс также намного менее требователен к ресурсам. Это тоже плюс.
Преимущество эластиксерча - очень удобное и богатое API.