Boolean lub zapytanie bool w ElasticSearch to rodzaj wyszukiwania, który pozwala łączyć warunki za pomocą warunków logicznych.
ElasticSearch przeszuka dokument w określonym indeksie i zwróci wszystkie rekordy pasujące do kombinacji klauzul logicznych.
Korzystając z zapytań logicznych, możesz filtrować w celu uzyskania bardziej szczegółowych parametrów, umożliwiając uzyskanie bardziej precyzyjnych wyników.
W tym artykule przyjrzymy się, jak użyć czterech klauzul logicznych dostępnych w ElasticSearch: Must, Must_not, powinien i filtruje.
Ogólna składnia
Ogólna składnia zapytania logicznego używanego w ElasticSearch to:
Pobierz _Search
"zapytanie":
„Bool”:
"musieć": [
],
"nie możesz": [
],
"powinien": [
],
„Filtr”: [
]
Nie musisz łączyć wszystkich logicznych wydarzeń w jednym zapytaniu. Możesz użyć każdego jako samodzielnej jednostki.
Boolean musi
Powiedzmy, że masz indeks zawierający blogi. Możemy pobrać dokumenty, w których system operacyjny jest komputerem systemu Windows. Poniżej znajduje się przykładowe zapytanie:
Get /kibana_sample_data_logs /_search
"zapytanie":
„Bool”:
"musieć": [
"termin":
"maszyna.OS ":
„Wartość”: „wygrana”
]
Jak pokazano w odpowiedzi przykładowej, powyższy wynik powinien zwrócić wartości, w których system operacyjny jest systemem Windows.
Boolean must_not
Podobnie możemy użyć wystąpienia must_not, aby usunąć termin, w którym system operacyjny jest systemem Windows.
Weźmy przykładowe zapytanie poniżej:
Get /kibana_sample_data_logs /_search
"zapytanie":
„Bool”:
"nie możesz": [
"termin":
"maszyna.OS ":
„Wartość”: „wygrana”
]
To zapytanie filtruje wszystkie rekordy, w których maszyna.OS to komputer z systemem Windows. Poniżej znajduje się przykład:
Filtr boolejski
Filtr Boolean usunie wszystkie dokumenty, które nie pasują do określonego warunku.
Na przykład możemy filtrować dzienniki, w których liczba bajtów jest większa niż 1000.
Możemy uruchomić zapytanie, jak pokazano poniżej:
Get /kibana_sample_data_logs /_search
"zapytanie":
„Bool”:
„Filtr”: [
"zakres":
„bajty”:
„GTE”: 10000
]
Odpowiedź powinna zawierać tylko dokumenty, w których liczba bajtów jest większa niż wartość ustalona.
Przykładowa odpowiedź:
Możesz także połączyć filtr z innymi występami logicznymi. Na przykład najpierw szukamy dopasowania dokumentów, w których system operacyjny jest wygrany, a następnie filtruje liczbę bajtów większych niż 10000.
Pobierz kibana_sample_data_logs/_search
"zapytanie":
„Bool”:
"musieć": [
"termin":
"maszyna.OS ":
„Wartość”: „wygrana”
],
„Filtr”: [
"zakres":
„bajty”:
„GTE”: 10000
]
W takim przypadku najpierw pobieramy dokumenty, w których system OS zawiera termin „wygrana”. Następnie używamy wyników i filtru dla liczby bajtów większych niż 10000.
Powstałe dokumenty będą podobne do tego pokazanego poniżej:
Boolean powinien
Ostatnim booleanem, którego można użyć. Powinny być ściśle podobne do konieczności, ale jest mniej surowe.
Pobierz kibana_sample_data_logs/_search
"zapytanie":
„Bool”:
"powinien": [
"mecz":
"maszyna.OS „:„ OSX ”
]
Przykład powinien zwrócić rekordowy ciąg „OSX” pojawia się w polu systemu operacyjnego.
Wniosek
W tym artykule nauczyłeś się pracować z zapytaniem boolean w ElasticSearch i filtruj wyniki w oparciu o określone warunki.