Оптимизация нечеткого соответствия Elasticsearch для огромного сервера / кластера серверов - PullRequest
3 голосов
/ 28 марта 2012

У меня есть индекс с довольно сложными запросами. Основным замедлением являются нечеткие запросы, которые выполняются для поля, содержащего 2-5 слов для каждой записи. В основном мне нужно найти строки с 1-3 разными символами.

На моем 4-ядерном (с HT) и 8 ГБ ОЗУ мои запросы выполняются примерно за 1-2 с каждый. На сервере с 12 ядрами (с HT) и 72 ГБ ОЗУ запрос выполняется за 0,3-0,5 секунды. Это не кажется мне разумным масштабированием предоставляемого оборудования. Я уверен, что должны быть некоторые скрытые параметры для настройки производительности запроса.

Я просмотрел руководство по упругому поиску, но не смог найти там ничего, что помогло бы мне настроить производительность на основе количества процессоров или ОЗУ или настройки эластичности специально для нечетких запросов.

Другой вопрос: как масштабируется, если я добавляю другой сервер, подобный этому? будет ли время запроса примерно вдвое меньше?

1 Ответ

2 голосов
/ 28 марта 2012

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

...