Jak odfiltrować wyniki elasticsearch?

Jak odfiltrować wyniki elasticsearch?
Domyślnie ElasticSearch wykorzystuje wynik trafności do sortowania wyników z zapytania wyszukiwania. Wynik istotności określa, jak istotny jest dokument w zależności od zapytanych danych.

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.