Requête imbriquée dans elasticsearch
Im avoir de problème pour faire une requête imbriquée de travail avec elasticsearch (Si je supprime l'un de la requête de chaînes qu'il fonctionne). le problème que j'essaye de résoudre, c'est que j'ai un document (Fermeture) contenant une liste de fermetures. Et je recherche une valeur dans la liste des fermetures d'où une autre valeur est de répondre par une condition. C'est seulement à prendre de la valeur à partir d'un lorsqu'il y a fermeture d'argan=1
{"query":{
"bool":{
"must":[
{
"nested":{
"query":{
"query_string":{
"default_field": "closures.rating",
"query": "5"
},"query_string": {
"default_field": "closure.argang",
"query": "1"
}
},
"path":"closures"
}
}
]
}
}}
Im obtenir cette erreur-réponse;
{
"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[O3wmPzFbTY6VkgvJOchpBQ][bransch_test][2]: SearchParseException[[bransch_test][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\":{\n \"bool\":{\n \"must\":[\n {\n \"nested\":{\n \"query\":{\n \"query_string\":{\n \"default_field\": \"closures.rating\",\n \"query\": \"5\"\n },\"query_string\": {\n \"default_field\": \"closure.argang\",\n \"query\": \"1\"\n } \n },\n \"path\":\"closures\"\n }\n }\n ]\n }\n }\n}]]]; nested: QueryParsingException[[bransch_test] [_na] query malformed, no field after start_object]; }{[O3wmPzFbTY6VkgvJOchpBQ][bransch_test][3]: SearchParseException[[bransch_test][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\":{\n \"bool\":{\n \"must\":[\n {\n \"nested\":{\n \"query\":{\n \"query_string\":{\n \"default_field\": \"closures.rating\",\n \"query\": \"5\"\n },\"query_string\": {\n \"default_field\": \"closure.argang\",\n \"query\": \"1\"\n } \n },\n \"path\":\"closures\"\n }\n }\n ]\n }\n }\n}]]]; nested: QueryParsingException[[bransch_test] [_na] query malformed, no field after start_object]; }{[O3wmPzFbTY6VkgvJOchpBQ][bransch_test][4]: SearchParseException[[bransch_test][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\":{\n \"bool\":{\n \"must\":[\n {\n \"nested\":{\n \"query\":{\n \"query_string\":{\n \"default_field\": \"closures.rating\",\n \"query\": \"5\"\n },\"query_string\": {\n \"default_field\": \"closure.argang\",\n \"query\": \"1\"\n } \n },\n \"path\":\"closures\"\n }\n }\n ]\n }\n }\n}]]]; nested: QueryParsingException[[bransch_test] [_na] query malformed, no field after start_object]; }{[O3wmPzFbTY6VkgvJOchpBQ][bransch_test][0]: SearchParseException[[bransch_test][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\":{\n \"bool\":{\n \"must\":[\n {\n \"nested\":{\n \"query\":{\n \"query_string\":{\n \"default_field\": \"closures.rating\",\n \"query\": \"5\"\n },\"query_string\": {\n \"default_field\": \"closure.argang\",\n \"query\": \"1\"\n } \n },\n \"path\":\"closures\"\n }\n }\n ]\n }\n }\n}]]]; nested: QueryParsingException[[bransch_test] [_na] query malformed, no field after start_object]; }{[O3wmPzFbTY6VkgvJOchpBQ][bransch_test][1]: SearchParseException[[bransch_test][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\":{\n \"bool\":{\n \"must\":[\n {\n \"nested\":{\n \"query\":{\n \"query_string\":{\n \"default_field\": \"closures.rating\",\n \"query\": \"5\"\n },\"query_string\": {\n \"default_field\": \"closure.argang\",\n \"query\": \"1\"\n } \n },\n \"path\":\"closures\"\n }\n }\n ]\n }\n }\n}]]]; nested: QueryParsingException[[bransch_test] [_na] query malformed, no field after start_object]; }]",
"status": 400
}
Ma cartographie ressemble à ceci.
{
"closure": {
"properties": {
"name": {
"type": "string"
},
"closures": {
"type": "nested",
"properties": {
"argang": {
"type": "string"
},
"rating": {
"type": "string"
}
}
},
"coadr": {
"type": "string"
},
"telnr": {
"type": "string"
}
}
}
}
Annyone ont aucune idée sur ce que je fais de mal?
Vous devez vous connecter pour publier un commentaire.
Votre requête n'est pas une requête valide. Vous avez besoin d'utiliser un composé de requête de combiner avec les autres requêtes, vous ne pouvez pas simplement utiliser une virgule et ajouter une autre question, où un seul est pris en charge.
Vous pouvez par exemple utiliser un bool requête et ont deux clauses, assez bien vos deux query_string. Ou peut-être vous pouvez même passer à l'aide de filtres, et ont une requête filtrée.
J'aurais un oeil sur les exemples sur cet article: http://www.spacevatican.org/2012/6/3/fun-with-elasticsearch-s-children-and-nested-documents/.