В MySQL я могу сделать что-то вроде:
SELECT id FROM table WHERE field = 'foo' LIMIT 5
Если таблица содержит 10 000 строк, этот запрос будет намного быстрее, чем если бы я оставил часть LIMIT.
В ElasticSearch у меня есть следующее:
{
"query":{
"fuzzy_like_this_field":{
"body":{
"like_text":"REALLY LONG (snip) TEXT HERE",
"max_query_terms":1,
"min_similarity":0.95,
"ignore_tf":true
}
}
}
}
Когда я запускаю этот поиск, это занимает несколько секунд, тогда как mysql может возвращать результаты для одного и того же запроса в гораздо меньшем времени.
Если я передаю параметр размера (установленный в 1), он успешно возвращает только 1 результат, но сам запрос не будет быстрее, чем если бы я установил размер неограниченным и вернул все результаты. Я подозреваю, что запрос выполняется полностью и только 1 результат возвращается после обработки запроса. Это означает, что атрибут "размер" бесполезен для моих целей.
Есть ли способ остановить поиск, как только найдет одну запись, которая соответствует нечеткому поиску, а не обрабатывать каждую запись в индексе перед возвратом ответа? Разве я не понимаю что-то более фундаментальное в этом вопросе?
Спасибо заранее.