La Query DSL d’Elasticsearch est expressive. Comprendre les differences entre les types de requetes evite les mauvais resultats.
Term vs Match
// Term : recherche exacte (pour status, IDs, tags)
{
"query": {
"term": { "status": "published" }
}
}
// Match : recherche texte libre (pour titres, descriptions)
{
"query": {
"match": {
"description": {
"query": "migration kubernetes",
"operator": "and"
}
}
}
}
Bool query : combiner les criteres
{
"query": {
"bool": {
"must": [{ "match": { "title": "kubernetes" } }],
"filter": [
{ "term": { "status": "published" } },
{ "range": { "published_at": { "gte": "2026-01-01" } } }
],
"must_not": [{ "term": { "category": "deprecated" } }]
}
}
}
Utilisez filter pour les criteres binaires — c’est mis en cache par Elasticsearch.
Agregations pour l’analytics
{
"aggs": {
"par_categorie": {
"terms": { "field": "category", "size": 10 }
}
},
"size": 0
}
Notre formation Elastic Stack couvre Elasticsearch Query DSL en profondeur.