Cos'è la query booleana in Elasticsearch

Cos'è la query booleana in Elasticsearch

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.