如何使用Java高级Rest客户端API映射elasticsearch查询的结果集?
我使用的是ES7.2。下面是来自ES的查询结果示例。它有两个字段“状态”和“服务ID”:如何使用Java高级Rest客户端API映射elasticsearch查询的结果集?,java,json,rest,
elasticsearch,jackson-databind,Java,Json,Rest,
elasticsearch,Jackson Databind,我使用的是ES7.2。下面是来自ES的查询结果示例。它有两个字段“状态”和“服务ID”: {{ "took" : 4, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 106, "relation" :
{{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 106,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "myindex",
"_type" : "_doc",
"_id" : "ENXDrWsBF759w7WDGxK4",
"_score" : 1.0,
"_source" : {
"STATUS" : "10",
"SERVICE_ID" : "916"
}
},
{
"_index" : "myindex",
"_type" : "_doc",
"_id" : "EdXDrWsBF759w7WDGxK4",
"_score" : 1.0,
"_source" : {
"STATUS" : "10",
"SERVICE_ID" : "916"
}
}
]
}
}
我想将其映射到下面的Java Bean“MyBean”:
我使用jackson库的ObjectMapper尝试了以下映射,但出现以下异常:
try {
SearchResponse searchResponse1 = client.search(searchRequest, RequestOptions.DEFAULT);
ObjectMapper mapper = new ObjectMapper();
java.util.List<MyBean> lst = new ArrayList<MyBean>();
for(SearchHit hit : searchResponse1.getHits().getHits()) {
//here below, i have the exception
MyBean s = mapper.readValue(hit.getSourceAsString(), MyBean.class);
lst.add(s);
}
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "STATUS" (class MyBean), not marked as ignorable (2 known properties: "status", "service_ID")
at [Source: (String)"{"STATUS":"11"}"; line: 1, column: 12] (through reference chain: MyBean["STATUS"])
你知道吗?这个怎么样
public class MyBean {
private String status;
private String name;
@JsonProperty("SERVICE_ID")
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
@JsonProperty("SERVICE_ID")
public String getServiceId() {
return serviceId;
}
@JsonProperty("STATUS")
public void setStatus(String status) {
this.status = status;
}
@JsonProperty("STATUS")
public String getStatus() {
return status;
}
}
public class MyBean {
private String status;
private String name;
@JsonProperty("SERVICE_ID")
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
@JsonProperty("SERVICE_ID")
public String getServiceId() {
return serviceId;
}
@JsonProperty("STATUS")
public void setStatus(String status) {
this.status = status;
}
@JsonProperty("STATUS")
public String getStatus() {
return status;
}
}