【发布时间】:2023-04-04 00:11:01
【问题描述】:
我确信这很简单,但我还没有找到它的文档或示例。我想要做的是基于来自 Elasticsearch GetResponse 的 XContent 返回一个 JSON 对象。代码摘录如下所示:
@GET
@Path("get/{index}/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("index") String index, @PathParam("id") String id) {
RestHighLevelClient client = ElasticAI.client();
GetRequest req = new GetRequest(index, id);
try {
GetResponse resp = client.get(req, RequestOptions.DEFAULT);
XContentBuilder xcb = XContentFactory.jsonBuilder();
resp.toXContent(xcb, ToXContent.EMPTY_PARAMS);
return Response.ok(<what goes here?>).build();
/// etc
我缺少的是如何让 XContentBuilder 生成一个对象,MOxy 或 Jackson 支持的标准转换器之一可以将其转换为 APPLICATION_JSON。
【问题讨论】:
-
我不熟悉 ElasticSearch API,但我想在某些时候你会想要写出一个输出流。您可以使用 StreamingOutput 获取 OutputStream。我看到 jsonBuilder() 方法接受 XContentBuilder 将结果写入的 OutputStream,无论这些“结果”是什么。就像我说的,我不熟悉图书馆。希望这会有所帮助。
-
@PaulSamsotha 感谢您的意见,我确实找到了一个解决方案,我将很快发布。
标签: elasticsearch jackson jax-rs moxy