J'essaie d'envoyer une demande à ES à partir de mes tests. J'ai appliqué le mappage et inséré des documents à l'index ES nommé 'gccount_test' à partir du même test . J'ai une requête très simple maintenue dans un fichier nommé member
que je veux tester.
{
"query" : {
"match_all" : {}
}
}
Ma méthode de test est
public void testMemberQuery(){
final Charset CHARSET = StandardCharsets.UTF_8
//load query
byte[] bytes = Files.readAllBytes(Paths.get(MEMBER_QUERY_PATH))
String query = CHARSET.decode(ByteBuffer.wrap(bytes)).toString()
println "QUERY => ${query}"
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
searchSourceBuilder.query(query)
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(INDEX_NAME)
//ClusterAdminClient adminClient = client.admin().cluster()
//searchRequestBuilder.setTypes(Constants.ESTYPE_MEMBER)
//println "CLUSTER => ${adminClient}"
searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
searchRequestBuilder.internalBuilder(searchSourceBuilder)
SearchResponse searchResponse = searchRequestBuilder.execute().actionGet()
println "Search Response => ${searchResponse.toString()}"
//blah blah
}
Malheureusement, je reçois l'erreur suivante.
Failed to execute phase [query_fetch], total failure; shardFailures {[1][gccount][0]: SearchParseException[[gccount_test][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"ewogICAgInF1ZXJ5IiA6IHsgCiAgICAgICAgICAibWF0Y2hfYWxsIiA6IHt9IAogICAgIH0KfQ=="}]]]; nested: QueryParsingException[[gccount_test] No query registered for [query]]; }
org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [query_fetch], total failure; shardFailures {[1][gccount_test][0]: SearchParseException[[gccount_test][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"ewogICAgInF1ZXJ5IiA6IHsgCiAgICAgICAgICAibWF0Y2hfYWxsIiA6IHt9IAogICAgIH0KfQ=="}]]]; nested: QueryParsingException[[gccount_test] No query registered for [query]]; }
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.Java:261)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$3.onFailure(TransportSearchTypeAction.Java:214)
at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteFetch(SearchServiceTransportAction.Java:246)
at org.elasticsearch.action.search.type.TransportSearchQueryAndFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryAndFetchAction.Java:75)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.Java:206)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.Java:193)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.Java:179)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1110)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:603)
at Java.lang.Thread.run(Thread.Java:722)
J'utilise la dépendance Elasticsearch 0.90.2
[group: 'org.elasticsearch', name: 'elasticsearch', version: '0.90.2']
La même chose fonctionne bien dans un environnement réel (instantané ci-dessous)
Le problème avec le chargement de la requête à partir du fichier est-il à l'origine de sa malformation ou quoi?
L'exception signifie essentiellement "Il n'y a pas de type de requête connu appelé query
". Je suppose que votre bibliothèque cliente insère automatiquement la propriété query
de niveau supérieur, de sorte que votre requête générée ressemble en fait à ceci:
{
"query" : {
"query" : {
"match_all" : {}
}
}
}
Si votre client peut vider la représentation JSON de la requête, cela peut beaucoup aider au débogage.
Essayez de supprimer la partie query
de votre fichier texte afin qu'elle ne soit que la match_all
requête, voyez si cela fonctionne pour vous.
votre chaîne de requête doit être
String query = "{\"match_all\":{}}";
vous pouvez voir d'ici
https://discuss.elastic.co/t/parsingexception-in-elastic-5-0-0/64626