2017-07-26 5 views
0

Je suis nouveau à Elasticserach et Jackson Json. Il y a une requête simple (index de recherche par un pays) J'essaie d'utiliser JsonGenerator,Jackson jsonGenerator génère requête Elasticsearch DSL

"{\n" + 
    " \"query\" : {\n" + 
    " \"match\": { \"exporting_country\":\"" + countryCode + "\"} \n" + 
    "} \n"+ 
    "}" 

code JsonGenerator,

 JsonGenerator jGenerator = jfactory.createGenerator(outputStream); 

     jGenerator.writeStartObject(); 
     jGenerator.writeFieldName("query"); 

     jGenerator.writeStartObject(); 

     jGenerator.writeFieldName("match"); 
     jGenerator.writeStringField("exporting_country", countryCode); 

     jGenerator.writeEndObject(); 
     jGenerator.writeEndObject(); 
     jGenerator.close(); 

il jette une erreur:

Can not write a field name, expecting a value 

Répondre

0

Vous » re manquez un appel à writeStartObject:

JsonGenerator jGenerator = jfactory.createGenerator(outputStream); 

    jGenerator.writeStartObject(); 
    jGenerator.writeFieldName("query"); 

    jGenerator.writeStartObject(); 

    jGenerator.writeFieldName("match"); 
    jGenerator.writeStartObject();    <--- add this 
    jGenerator.writeStringField("exporting_country", countryCode); 
    jGenerator.writeEndObject();    <--- and this 

    jGenerator.writeEndObject(); 
    jGenerator.writeEndObject(); 
    jGenerator.close();