Booleano, o una query Bool in Elasticsearch, è un tipo di ricerca che consente di combinare le condizioni utilizzando le condizioni booleane.
ElasticSearch cercherà il documento nell'indice specificato e restituirà tutti i record corrispondenti alla combinazione di clausole booleane.
Utilizzando query booleane, è possibile filtrare parametri più specifici, consentendo di ottenere risultati più precisi.
In questo articolo, esamineremo come utilizzare quattro clausole booleane disponibili in ElasticSearch: Must, Must_Not, dovrebbe e filtrare.
Sintassi generale
La sintassi generale di una query booleana utilizzata in Elasticsearch è:
Ottieni _search
"query":
"bool":
"dovere": [
",
"non devi": [
",
"Dovrebbe": [
",
"Filtro": [
"
Non è necessario combinare tutte le occorrenze booleane in una singola query. Puoi usarne ciascuno come unità autonoma.
Deve essere booleano
Diciamo che hai un indice contenente i weblog. Possiamo recuperare i documenti in cui il sistema operativo è una macchina Windows. Di seguito è una query di esempio:
Get /kibana_sample_data_logs /_search
"query":
"bool":
"dovere": [
"termine":
"macchina.sistema operativo ":
"Valore": "Win"
"
Come mostrato nella risposta di esempio, il risultato sopra dovrebbe restituire i valori in cui il sistema operativo è Windows.
Booleano must_not
Allo stesso modo, possiamo usare l'evento Must_Not per rimuovere il termine in cui il sistema operativo è Windows.
Prendi la query di esempio di seguito:
Get /kibana_sample_data_logs /_search
"query":
"bool":
"non devi": [
"termine":
"macchina.sistema operativo ":
"Valore": "Win"
"
Questa query filtra tutti i record in cui la macchina.Il sistema operativo è una macchina Windows. Di seguito è riportato un risultato di esempio:
Filtro booleano
Il filtro booleano rimuoverà tutti i documenti che non corrispondono alla condizione specificata.
Ad esempio, possiamo filtrare i registri in cui il numero di byte è maggiore di 1000.
Possiamo eseguire una query come mostrato di seguito:
Get /kibana_sample_data_logs /_search
"query":
"bool":
"Filtro": [
"allineare":
"bytes":
"GTE": 10000
"
La risposta dovrebbe includere solo i documenti in cui il numero di byte è maggiore del valore impostato.
Esempio Risposta:
Puoi anche combinare un filtro con altri eventi booleani. Ad esempio, cerchiamo innanzitutto documenti corrispondenti in cui il sistema operativo viene vinto e quindi filtrano il numero di byte superiori a 10000.
Ottieni kibana_sample_data_logs/_search
"query":
"bool":
"dovere": [
"termine":
"macchina.sistema operativo ":
"Valore": "Win"
",
"Filtro": [
"allineare":
"bytes":
"GTE": 10000
"
In questo caso, per prima cosa prendiamo i documenti in cui il sistema operativo contiene il termine "vittoria". Quindi utilizziamo i risultati e il filtro per il numero di byte superiori a 10000.
I documenti risultanti saranno simili a quello mostrato di seguito:
Booleano dovrebbe
L'evento booleano finale che puoi usare è il. Il dovrebbe è strettamente simile al must, ma è meno severo.
Ottieni kibana_sample_data_logs/_search
"query":
"bool":
"Dovrebbe": [
"incontro":
"macchina.OS ":" OSX "
"
L'esempio dovrebbe restituire i record La stringa "OSX" viene visualizzata nel campo OS.
Conclusione
In questo articolo, hai imparato a lavorare con la query booleana in Elasticsearch e i risultati del filtro in base a condizioni specifiche.