Comment filtrer les résultats de la recherche élastique?

Comment filtrer les résultats de la recherche élastique?
Par défaut, Elasticsearch utilise un score de pertinence pour trier les résultats d'une requête de recherche. Un score de pertinence détermine la pertinence d'un document en fonction des données interrogées.

Cependant, nous pouvons appliquer des filtres pour affiner et maximiser les documents pertinents renvoyés d'une requête.

Ce guide apprendra à appliquer des conditions dans une requête Elasticsearch pour filtrer les résultats de la requête plus précis.

Filtre par terme

Nous pouvons utiliser le terme requête pour filtrer les résultats dans une requête. Par exemple, la requête ci-dessous filme les documents où le nom de la ville est New York.

Get / kibana_sample_data_ecommerce / _search

"mettre en doute":
"bool":
"filtre": [
"terme":
"Geoip.City_name ":" New York "

]]


Dans l'exemple de requête ci-dessus, nous utilisons un filtre booléen pour rechercher des documents qui correspondent au City_name comme «New York."

L'exemple de résultat pour cela est:

Multiples termes

Vous pouvez également faire correspondre des documents qui correspondent à deux termes ou plus. Par exemple, nous pouvons interroger pour les enregistrements où le type = ordre et la région = «New York»

Get / kibana_sample_data_ecommerce / _search

"mettre en doute":
"bool":
"filtre": [
"terme":
"Type": "Order"
,

"terme":
"Geoip.Région_Name ":" New York "


]]


Dans un tel exemple, le type et le GEOIP.Region_name Les champs doivent évaluer fidèle au terme recherché.

Exemple de résultat:

Filtre de plage

Pour filtrer par une valeur numérique, vous pouvez utiliser des conditions booléennes. Par exemple, pour filtrer les résultats où le prix du produit est supérieur à 1000, nous pouvons faire:

Get / kibana_sample_data_ecommerce / _search

"mettre en doute":
"bool":
"filtre": [
"gamme":
"des produits.prix de base":
"GTE": 1000


]]

La requête ci-dessus doit filtrer les documents où la base_price des éléments est supérieure ou égale à 1000.

Voici quelques exemples de résultats:

Filtrer par phrase

Supposons que vous ne vous souvenez qu'une phrase spécifique et que vous ne vouliez pas récupérer tous les documents dans l'index? Vous pouvez utiliser MUST et MATCH_PHRASE pour réduire les résultats.

Par exemple, que se passe-t-il si nous voulons seulement obtenir les produits dans la catégorie des hommes mais ne sont pas sûrs de tous les types spécifiques? Nous pouvons exécuter une requête comme:

Get / kibana_sample_data_ecommerce / _search

"mettre en doute":
"bool":
"devoir": [
"match_phrase":
"des produits.catégorie ":" hommes "

]]


Dans l'exemple ci-dessus, nous utilisons le MUST BOOLEAN pour s'assurer que la phrase appariée correspond à celle spécifiée.

Vous trouverez ci-dessous des résultats d'exemples:

Ne doit pas filtrer

Nous pouvons également utiliser le filtre incontournable pour supprimer tous les documents contenant une phrase ou une plage spécifique. Par exemple, pour exclure tous les documents où la date d'achat est lundi, nous pouvons faire:

Get / kibana_sample_data_ecommerce / _search

"mettre en doute":
"bool":
"ne doit pas": [
"correspondre":
"day_of_week": "lundi"

]]


Exemple de résultats Renvoie des documents qui ne contiennent pas le jour_of_week comme lundi.

Conclusion

Ce guide a discuté des résultats de filtrage élastique.