在 Apache Camel Elasticsearch 中使用 GET 请求时出现异常
Exception while using GET request in Apache Camel Elasticsearch
描述:我必须使用 Apache camel 从 Elasticsearch 5.4 读取特定字段。当我使用下面的代码时,我无法查看响应
异常:从 XContent 构建 toString 时出错:com.fasterxml.jackson.core.JsonGenerationException:无法启动对象,需要字段名称(上下文:对象)
代码:
from("direct:start")
.process(exchange -> {
GetRequest a = new GetRequest("example", "doc", "1");
exchange.getIn().setBody(a);
})
.to("elasticsearch5://elastic?operation=GET_BY_ID&ip=<ip>&port=9300")
.log("${body}");
完成堆栈跟踪:
(route1) elasticsearch5://elastic?ip=&operation=GET_BY_ID&port=9300 --> log[messageId] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-NLVHPRAAB02027-53300-1510315731625-0-1}, BodyType:org.elasticsearch.action.support.PlainActionFuture, Body:Error building toString out of XContent: com.fasterxml.jackson.core.JsonGenerationException: Can not start an object, expecting field name (context: Object)
at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1897)
at com.fasterxml.jackson.core.json.JsonGeneratorImpl._reportCantWriteValueExpectName(JsonGeneratorImpl.java:244)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator._verifyValueWrite(UTF8JsonGenerator.java:1033)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeStartObject(UTF8JsonGenerator.java:313)
at org.elasticsearch.common.xcontent.json.JsonXContentGenerator.writeStartObject(JsonXContentGenerator.java:161)
at org.elasticsearch.common.xcontent.XContentBuilder.startObject(XContentBuilder.java:217)
at org.elasticsearch.index.get.GetResult.toXContent(GetResult.java:251)
at org.elasticsearch.action.get.GetResponse.toXContent(GetResponse.java:158)
at org.elasticsearch.common.Strings.toString(Strings.java:901)
at org.elastic... [Body clipped after 1000 chars, total length is 4350]
您使用的是 camel-elasticsearch5 组件吗?在那种情况下,你需要做这样的事情:
描述:我必须使用 Apache camel 从 Elasticsearch 5.4 读取特定字段。当我使用下面的代码时,我无法查看响应
异常:从 XContent 构建 toString 时出错:com.fasterxml.jackson.core.JsonGenerationException:无法启动对象,需要字段名称(上下文:对象)
代码:
from("direct:start")
.process(exchange -> {
GetRequest a = new GetRequest("example", "doc", "1");
exchange.getIn().setBody(a);
})
.to("elasticsearch5://elastic?operation=GET_BY_ID&ip=<ip>&port=9300")
.log("${body}");
完成堆栈跟踪:
(route1) elasticsearch5://elastic?ip=&operation=GET_BY_ID&port=9300 --> log[messageId] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-NLVHPRAAB02027-53300-1510315731625-0-1}, BodyType:org.elasticsearch.action.support.PlainActionFuture, Body:Error building toString out of XContent: com.fasterxml.jackson.core.JsonGenerationException: Can not start an object, expecting field name (context: Object) at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1897) at com.fasterxml.jackson.core.json.JsonGeneratorImpl._reportCantWriteValueExpectName(JsonGeneratorImpl.java:244) at com.fasterxml.jackson.core.json.UTF8JsonGenerator._verifyValueWrite(UTF8JsonGenerator.java:1033) at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeStartObject(UTF8JsonGenerator.java:313) at org.elasticsearch.common.xcontent.json.JsonXContentGenerator.writeStartObject(JsonXContentGenerator.java:161) at org.elasticsearch.common.xcontent.XContentBuilder.startObject(XContentBuilder.java:217) at org.elasticsearch.index.get.GetResult.toXContent(GetResult.java:251) at org.elasticsearch.action.get.GetResponse.toXContent(GetResponse.java:158) at org.elasticsearch.common.Strings.toString(Strings.java:901) at org.elastic... [Body clipped after 1000 chars, total length is 4350]
您使用的是 camel-elasticsearch5 组件吗?在那种情况下,你需要做这样的事情: