Jackson jsonGenerator 生成 Elasticsearch 查询 DSL

Jackson jsonGenerator generate Elasticsearch query DSL

我是 Elasticserach 和 Jackson 的新手 Json。有一个简单的查询(按国家/地区搜索索引)我尝试使用 JsonGenerator,

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

Json生成器代码,

        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();

它抛出一个错误:

Can not write a field name, expecting a value

您未接来电 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();