Chapitre 3 : L'Art de la Recherche (Queries)
Match, Term, Bool, Nested queries, Recherche plein texte
Récupérer une recette par son ID
GET /recettes/_doc/1
Recherche simple (type "Google")
Trouvons les recettes qui contiennent le mot "classique". La requête match est idéale pour ça.
GET /recettes/_search
{
"query": {
"match": {
"description": "classique"
}
}
}
Résultat attendu : Coq au Vin et Crème Brûlée.
Recherche sur un champ keyword
Trouvons tous les desserts. La requête term cherche une correspondance exacte, parfaite pour les champs keyword.
GET /recettes/_search
{
"query": {
"term": {
"type_plat": "Dessert"
}
}
}
Résultat attendu : Crème Brûlée.
Requête booléenne (combiner des conditions)
Cherchons un plat principal (must) qui contient des champignons (must) mais SANS vin rouge (must_not). C'est ici que la puissance se révèle !
GET /recettes/_search
{
"query": {
"bool": {
"must": [
{ "term": { "type_plat": "Plat Principal" } }
],
"filter": [
{
"nested": {
"path": "ingredients",
"query": {
"match": { "ingredients.nom": "champignons" }
}
}
}
],
"must_not": [
{
"nested": {
"path": "ingredients",
"query": {
"match": { "ingredients.nom": "vin rouge" }
}
}
}
]
}
}
}
Résultat attendu : Normalement, aucun ! Notre Coq au Vin contient les deux. Essayez de retirer la clause must_not pour le voir apparaître.