Comment rechercher un terme et faire correspondre une condition booléenne
J'ai eu un bon succès à obtenir des résultats pour les recherches à l'aide de la syntaxe suivante, mais je vais avoir de la difficulté à l'ajout d'une condition booléenne.
http://localhost:9200/index_name/type_name/_search?q=test
Mes documents:
{
"isbn":"9780307414922",
"name":"Dark of the Night",
"adult":false
}
Voici ma meilleure supposition quant à la façon de réaliser ce que je suis en train de faire.
{
"query_string": {
"default_field": "_all",
"query": "test"
},
"from": 0,
"size": 20,
"terms": {
"adult": true
}
}
Cependant, ce résultat est "d'Analyser l'Échec [Sans analyseur pour l'élément [query_string]]]; }]"
Je suis à l'aide d'elastic search 0.20.5.
Comment puis-je rechercher des documents contenant un terme de recherche le chemin "?q=test" ne et le filtre par le document de l'adulte à la propriété?
Merci d'avance.
source d'informationauteur camomileCase | 2013-03-20
Vous devez vous connecter pour publier un commentaire.
Votre
adult == true
clause doit faire partie de laquery
- vous ne pouvez pas passer dans unterm
clause comme un paramètre de niveau desearch
.De sorte que vous pourriez ajouter à la requête en tant que requête clausedans ce cas, vous devez joindre à la fois les clauses de requête à l'aide d'un
bool
de la requête, comme suit:Vraiment, cependant, les clauses de requête devrait être utilisé pour:
Cependant, votre
adult == true
clause n'est pas utilisé de changer la pertinence, et il ne comporte pas de recherche de texte intégral. C'est plus une réponse oui/non, en d'autres termes, il est mieux appliqué comme une clause de filtre.Cela signifie que vous avez besoin d'envelopper votre requête de texte intégral (
_all
contienttest
) dans une requête clause qui accepte à la fois d'une requête et d'un filtre: lefiltered
requête:Les filtres sont généralement plus rapides, car: