Requêtes de recherche de base dans Elasticsearch  : un guide complet

Requête basée sur des mots clés(Match Query)

La requête Match est utilisée pour rechercher des documents contenant des mots-clés spécifiques. Il renverra les documents qui ont au moins un mot-clé correspondant.

Exemple: Rechercher des produits dont le nom contient le mot-clé laptop  dans le products Index.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "name": "laptop"  
    }  
  }  
}  

 

Doit contenir tous les mots clés(Match Phrase Query)

La requête Match Phrase exige que tous les mots-clés de la requête apparaissent consécutivement et dans le bon ordre dans le texte du document.

Exemple: recherchez des produits dont la description contient la phrase HP laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase": {  
      "description": "HP laptop"  
    }  
  }  
}  

 

Doit contenir le préfixe de la phrase entière(Match Phrase Prefix Query)

La requête Match Phrase Prefix est similaire à Match Phrase, mais elle permet une correspondance partielle du dernier mot-clé.

Exemple: rechercher des produits dont la description commence par laptop.

GET /products/_search  
{  
  "query": {  
    "match_phrase_prefix": {  
      "description": "laptop"  
    }  
  }  
}  

 

Requête basée sur les termes(requête de termes)

La requête Terme est utilisée pour rechercher des documents avec un champ ayant une valeur exacte telle que spécifiée.

Exemple: Rechercher des produits dont le category champ a la valeur laptop.

GET /products/_search  
{  
  "query": {  
    "term": {  
      "category": "laptop"  
    }  
  }  
}  

 

Requête basée sur la plage(Range Query)

La requête Range permet de rechercher des documents avec une valeur de champ dans une plage spécifiée.

Exemple : rechercher des produits dont les prix sont compris entre 500 et 1 000.

GET /products/_search  
{  
  "query": {  
    "range": {  
      "price": {  
        "gte": 500,  
        "lte": 1000  
      }  
    }  
  }  
}  

 

Requête au niveau du terme

Les requêtes au niveau du terme permettent de rechercher des documents en fonction de conditions spécifiques telles que les requêtes Exact, Préfixe, Plage, Caractère générique et Fuzzy.

Exemple : rechercher des produits dont le nom commence par laptop et dont les prix sont compris entre 500 et 1 000.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "prefix": {  
            "name": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Full-Text Mettre en doute

Full-Text les requêtes permettent de rechercher des champs de texte à l'aide d'algorithmes d'analyse de texte pour trouver des mots similaires ou des synonymes.

Exemple : Rechercher des produits dont les descriptions contiennent computer  ou laptop.

GET /products/_search  
{  
  "query": {  
    "match": {  
      "description": "computer laptop"  
    }  
  }  
}  

 

Requête booléenne

Boolean Les requêtes permettent de combiner plusieurs sous-requêtes avec diverses conditions de recherche, telles que doit contenir tout, doit contenir au moins un ou ne doit pas contenir, pour obtenir des résultats de recherche précis.

Exemple: Trouver des produits avec l' category être laptop  et des prix entre 500 et 1000.

GET /products/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "term": {  
            "category": "laptop"  
          }  
        },  
        {  
          "range": {  
            "price": {  
              "gte": 500,  
              "lte": 1000  
            }  
          }  
        }  
      ]  
    }  
  }  
}  

 

Voici les requêtes de recherche de base dans Elasticsearch, accompagnées d'exemples illustrés pour chaque type de requête. Lorsque vous utilisez Elasticsearch, vous pouvez combiner ces requêtes pour rechercher des données de manière flexible et efficace.