Come si filtrano i risultati di Elasticsearch?

Come si filtrano i risultati di Elasticsearch?
Per impostazione predefinita, Elasticsearch utilizza un punteggio di pertinenza per ordinare i risultati da una query di ricerca. Un punteggio di pertinenza determina quanto sia rilevante un documento a seconda dei dati interrogati.

Tuttavia, possiamo applicare i filtri per restringere e massimizzare i documenti pertinenti restituiti da una query.

Questa guida imparerà come applicare le condizioni in una query ElasticSearch per filtrare risultati di query più precisi.

Filtro per termine

Possiamo usare il termine query per filtrare i risultati in una query. Ad esempio, la query di seguito filtra i documenti in cui il nome della città è New York.

Get /kibana_sample_data_ecommerce /_search

"query":
"bool":
"Filtro": [
"termine":
"Geoip.City_Name ":" New York "

"


Nell'esempio di query sopra, utilizziamo un filtro booleano per cercare documenti che corrispondono al NAME City_Am come "New York."

Il risultato di esempio per questo è:

Termini multipli

Puoi anche abbinare i documenti che corrispondono a due o più termini. Ad esempio, possiamo interrogare per i record in cui il tipo = ordine e regione = "New York"

Get /kibana_sample_data_ecommerce /_search

"query":
"bool":
"Filtro": [
"termine":
"tipo": "ordina"
,

"termine":
"Geoip.region_name ":" New York "


"


In un tale esempio, sia il tipo che il geoip.I campi region_name devono valutare il vero al termine cercato.

Risultato di esempio:

Filtro a portata

Per filtrare per un valore numerico, è possibile utilizzare le condizioni booleane. Ad esempio, per filtrare i risultati in cui il prezzo del prodotto è superiore a 1000, possiamo fare:

Get /kibana_sample_data_ecommerce /_search

"query":
"bool":
"Filtro": [
"allineare":
"prodotti.prezzo base":
"GTE": 1000


"

La query sopra deve filtrare i documenti in cui il Base_Price degli elementi è maggiore o uguale a 1000.

Ecco alcuni risultati di esempio:

Filtrare per frase

Supponiamo di ricordare solo una frase specifica e di non voler recuperare tutti i documenti nell'indice? È possibile utilizzare Must e Match_Phrase per restringere i risultati.

Ad esempio, cosa succede se vogliamo solo ottenere i prodotti nella categoria maschile ma non siamo sicuri di tutti i tipi specifici? Possiamo eseguire una domanda come:

Get /kibana_sample_data_ecommerce /_search

"query":
"bool":
"dovere": [
"Match_Phrase":
"prodotti.categoria ":" uomini "

"


Nell'esempio sopra, utilizziamo il booleano deve garantire che la frase abbinata corrisponda a quella specificata.

Di seguito sono riportati i risultati di esempio:

Non deve filtrare

Possiamo anche utilizzare il filtro Must_Not per rimuovere tutti i documenti che contengono una frase o una gamma specifica. Ad esempio, per escludere tutti i documenti in cui la data di acquisto è lunedì, possiamo fare:

Get /kibana_sample_data_ecommerce /_search

"query":
"bool":
"non devi": [
"incontro":
"Day_of_Week": "Lunedì"

"


Risultati di esempio documenti di ritorno che non contengono Day_of_Week come lunedì.

Conclusione

Questa guida ha discusso dei risultati di Filter ElaSticSearch utilizzando il condizionale booleano come l'intervallo, e altro.