Récupérer (avancé)
Requêtes
Les requêtes s'écrivent en Query DSL.
Assez différent de SQL et en JSON.
Attention : Requête en POST ?
Oui, car on a un corps dans la requête.
The truth is that RFC 7231—the RFC that deals with HTTP semantics and content—does not define what should happen to a GET request with a body! As a result, some HTTP servers allow it, and some—especially caching proxies—don't.
Méthode : Tout récupérer
1
POST /api04/students/_search
2
{
3
"query": {
4
"match_all": {}
5
}
6
}
7
1
POST /api04/students/_search
2
{
3
"query": {
4
"match_all": {}
5
},
6
"size": 100
7
}
Méthode : Par mot exact dans un champ
1
POST /api04/students/_search
2
{
3
"query": {
4
"match": {
5
"firstName": "alexandra"
6
}
7
}
8
}
Méthode : Avec une regex
1
POST /api04/students/_search
2
{
3
"query": {
4
"wildcard": {
5
"firstName": "alexandr?"
6
}
7
}
8
}
? = Un caractère
* = Zéro, un ou plusieurs caractères
Conseil : Le scoring
A partir de maintenant, le scoring devient intéressant !
Méthode : Par mot dans tous les champs d'un document
1
POST /api04/students/_search
2
{
3
"query": {
4
"match": {
5
"_all": "sylvain travel"
6
}
7
}
8
}
_all permet de concaténer tous les champs de ce document.
Méthode : Avec plusieurs mots dans un champ
1
POST /api04/students/_search
2
{
3
"query": {
4
"match": {
5
"about": {
6
"query": "travel cars",
7
"operator": "and"
8
}
9
}
10
}
11
}
Par défaut, l'opérateur est or