java 如何获取ElasticSearch BoolQuery的JSON

wz8daaqr  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(182)

给定一个BoolQuery示例,如何找出将发送到ES服务器的JSON字符串?
请注意,我使用的是ES7。
我尝试了toString(),但它返回类似于“co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery@3cec79d3”的内容。
我看到有一个serialize()方法,但是我一辈子都搞不清楚如何构造这两个参数(JsonGenerator和JsonpMapper)。
我尝试了Amit的建议,从SearchRequest对象的源代码中获取json,但似乎不起作用。例如,在下面的示例代码中,最后一行引发了NullPointerException,因为sReq.source()返回null。

SearchRequest sReq = SearchRequest.of(s -> s
  .index("products")
  .query(q -> q
      .match(t -> t
          .field("name")
          .query("hello")
      )
    )
  );

  String sReqJson = sReq.source().toString();
2w2cym1i

2w2cym1i1#

如果您使用的是Elasticsearch 7客户端,则必须具有搜索请求对象,您可以使用searchRequest.source().toString()在其上获取搜索JSON。

7uhlpewt

7uhlpewt2#

我想通了:

StringWriter writer = new StringWriter();
    JsonGenerator generator = JacksonJsonProvider.provider().createGenerator(writer);
    boolQuery.serialize(generator, new JacksonJsonpMapper());
    generator.flush();
    String json = writer.toString();

相关问题