Comment combiner plusieurs requêtes dans ElasticSearch
Pour référence, voici le code. Je suis en train de faire un hubot plugin qui enregistre à elasticsearch et utilise ensuite hubot commandes à la recherche de ces journaux.
https://gist.github.com/4050748
Je suis en train de récupérer les enregistrements qui correspondent à deux requêtes.
{
query: {
match: {
user: "SomeUsername"
},
range: {
date: {
from: (Date.now() - 3600)
}
}
},
size: 50
}
Je m'attendais:
- Jusqu'à 50 enregistrements
- documents de l'utilisateur
- enregistrements dans la dernière heure
J'ai eu:
- jusqu'à 10 enregistrements
- documents de l'utilisateur
- de tout temps
Comment puis-je obtenir tous les records avec certains nom d'utilisateur dans la dernière heure? Dois-je utiliser match_all avec des filtres? Est ce que je cherche non pris en charge?
En SQL il serait quelque chose comme:
Select (*) from messages where user_name = ? and time > ?
source d'informationauteur EnabrenTane
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le bool requête de combiner différents types de requêtes. Vous pouvez ensuite choisir si chaque requête doit correspondre, doit correspondre (en option), ou ne doit pas correspondre.
Pour quelqu'un qui trébuche sur cette question et se demande ce qu'il ressemble à combiner un match et la portée de la requête dans ElasticSearch, cet exemple pourrait ressembler