W MySQL można zrobić coś takiego:Elastic Search Limit
SELECT id FROM table WHERE field = 'foo' LIMIT 5
Jeśli tabela zawiera 10.000 wierszy, to zapytanie jest sposób sposób szybciej niż gdybym pominął część limitu.
W ElasticSearch, mam następujące:
{
"query":{
"fuzzy_like_this_field":{
"body":{
"like_text":"REALLY LONG (snip) TEXT HERE",
"max_query_terms":1,
"min_similarity":0.95,
"ignore_tf":true
}
}
}
}
Kiedy uruchomić to wyszukiwanie, to trwa kilka sekund, natomiast mysql może zwrócić wyników dla tego samego zapytania w znacznie, znacznie mniej czasu.
Jeśli przekażę parametr wielkości (ustawiony na 1), to z powodzeniem zwraca tylko wynik 1, ale samo zapytanie nie jest szybsze, niż gdybym ustawił rozmiar nieograniczony i zwrócił wszystkie wyniki. Podejrzeń, że kwerenda jest uruchamiana w całości i tylko jeden wynik jest zwracany po zakończeniu przetwarzania kwerendy. Oznacza to, że atrybut "rozmiar" jest bezużyteczny dla moich celów.
Czy istnieje sposób, aby moje wyszukiwanie zakończyło wyszukiwanie, gdy tylko znajdzie pojedynczy rekord pasujący do wyszukiwania rozmytego, a nie przetwarza każdy rekord w indeksie przed zwróceniem odpowiedzi? Czy nie rozumiem czegoś bardziej fundamentalnego na ten temat?
Z góry dziękuję.