Możemy jednak zastosować filtry, aby zawęzić i zmaksymalizować odpowiednie dokumenty zwrócone z zapytania.
Ten przewodnik dowie się, jak stosować warunki w zapytaniu ElasticSearch, aby odfiltrować bardziej precyzyjne wyniki zapytania.
Filtr według terminu
Możemy użyć terminu zapytanie do odfiltrowania wyników w zapytaniu. Na przykład zapytanie poniżej filtruje dokumenty, w których nazwa miasta to Nowy Jork.
Get /kibana_sample_data_ecommerce /_search
"zapytanie":
„Bool”:
„Filtr”: [
"termin":
„Geoip.City_name „:„ Nowy Jork ”
]
W powyższym przykładzie używamy filtra boolowskiego do wyszukiwania dokumentów pasujących do nazwy miasta miasto jako „Nowy Jork."
Przykładowym wynikiem tego jest:
Wiele terminów
Możesz również dopasować dokumenty pasujące do dwóch lub więcej warunków. Na przykład możemy zapytać o rekordy, w których typ = zamówienie i region = „Nowy Jork”
Get /kibana_sample_data_ecommerce /_search
"zapytanie":
„Bool”:
„Filtr”: [
"termin":
„Typ”: „Zamów”
,
"termin":
„Geoip.Region_name „:„ Nowy Jork ”
]
W takim przykładzie zarówno typ, jak i geoip.Pola nazwy regionowej muszą ocenić wiernie przeszukany termin.
Przykładowy wynik:
Filtr zasięgu
Aby filtrować wartość liczbową, możesz użyć warunków logicznych. Na przykład, aby filtrować wyniki, w których cena produktu jest większa niż 1000, możemy zrobić:
Get /kibana_sample_data_ecommerce /_search
"zapytanie":
„Bool”:
„Filtr”: [
"zakres":
„Produkty.Cena podstawowa":
„GTE”: 1000
]
Powyższe zapytanie powinno filtrować dokumenty, w których wartość podstawowa elementów jest większa lub równa 1000.
Oto kilka przykładowych wyników:
Filtr według fraz
Załóżmy, że pamiętasz tylko określoną frazę i nie chcesz pobierać wszystkich dokumentów w indeksie? Możesz użyć must i match_phrase, aby zawęzić wyniki.
Na przykład, co jeśli chcemy tylko zdobyć produkty w kategorii mężczyzn, ale nie jesteśmy pewni wszystkich konkretnych typów? Możemy uruchomić zapytanie jako:
Get /kibana_sample_data_ecommerce /_search
"zapytanie":
„Bool”:
"musieć": [
„Match_phrase”:
„Produkty.Kategoria „:„ Men's ”
]
W powyższym przykładzie używamy boolean, aby zapewnić dopasowane fraza pasuje do tego, co określono.
Poniżej są przykładowe wyniki:
Nie może filtrować
Możemy również użyć filtra must_not do usunięcia wszystkich dokumentów zawierających określoną frazę lub zakres. Na przykład, aby wykluczyć wszystkie dokumenty, w których data zakupu jest w poniedziałek, możemy zrobić:
Get /kibana_sample_data_ecommerce /_search
"zapytanie":
„Bool”:
"nie możesz": [
"mecz":
„Day_of_week”: „Poniedziałek”
]
Przykładowe wyniki Zwróć dokumenty, które nie zawierają dnia_of_week jako poniedziałek.
Wniosek
W niniejszym przewodniku omówiono wyniki elastyki filtrowania przy użyciu logicznego warunkowego, takiego jak zakres, must i więcej.