我一直在使用弹性搜索版本5.6.16 & Spring。我想在字符串.For的基础上执行搜索,目的是编写以下代码。
Controller.java
public @ResponseBody String getItem(@RequestParam("data") String data) {
QueryBuilder qb = QueryBuilders.queryStringQuery(data);
SearchResponse searchResponse = client.prepareSearch("index")
.setTypes("default").setQuery(qb).setSize(10).execute().actionGet();
return searchResponse;
}此方法正在返回字符串。但我想得到的结果是List <Student>。其中Student类是:
Student.java
@Getter
@Setter
@AllArgsConstructor
@ToString
public class Student {
private int id;
private int name;
}我正在上传ES索引上的“学生”数据。请告诉我如何从ES列表中得到结果。
发布于 2019-11-19 20:54:42
也许这一变化会帮助你取得进步:
public @ResponseBody List<Student> getItem(@RequestParam("data") String data) {
List<Student> records = new ArrayList<Student>();
QueryBuilder qb = QueryBuilders.queryStringQuery(data);
SearchResponse searchResponse = client.prepareSearch("index")
.setTypes("default").setQuery(qb).setSize(10).execute().actionGet();
SearchHit[] results = searchResponse.getHits().getHits();
ObjectMapper objectMapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
for(SearchHit hit : results){
String source = hit.getSourceAsString();
Student s = objectMapper.readValue(source,Student.class);
records.add(s);
}
return records;
}希望这能有所帮助
https://stackoverflow.com/questions/58940973
复制相似问题