@Controller
@ResponseBody
public class CurdController {
@Autowired
private TransportClient client;
/**
* 根据id查询接口
*
* @param id
* @return
*/
@RequestMapping("getInfoById/{id}")
public ResponseEntity getInfoById(@PathVariable String id) {
GetResponse documentFields = client.prepareGet("people", "_doc", id).get();
System.out.println(documentFields);
if (!documentFields.isExists()) {
return new ResponseEntity(HttpStatus.NOT_FOUND);
}
return new ResponseEntity(documentFields.getSource(), HttpStatus.OK);
}
/**
* 增加接口
*
* @param id
* @param name
* @param age
* @param date
* @return
*/
@RequestMapping("addInfo")
public ResponseEntity addInfo(
@RequestParam(name = "id") Long id,
@RequestParam(name = "name") String name,
@RequestParam(name = "age") Integer age,
@RequestParam(name = "date")
String date) {
try {
//也可以用StringBuilder
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("id", id)
.field("name", name)
.field("age", age)
.field("date", date).endObject();
IndexResponse response = client.prepareIndex("people2", "_doc").setSource(builder).get();
return new ResponseEntity(response.getId(), HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* 根据id删除接口
*
* @param id
* @return
*/
@RequestMapping("deleteById/{id}")
public ResponseEntity deleteById(@PathVariable(name = "id") String id) {
DeleteResponse deleteResponse = client.prepareDelete("people2", "_doc", id).get();
return new ResponseEntity(deleteResponse.getResult().toString(), HttpStatus.OK);
}
/**
* 根据id更新接口
*
* @param id
* @param age
* @param name
* @param date
* @return
*/
@PutMapping("updateById/{id}")
public ResponseEntity updateById(@PathVariable(name = "id") String id, @RequestParam(name = "age") Integer age, @RequestParam(name = "name") String name, @RequestParam(name = "date") String date) {
try {
UpdateRequest updateRequest = new UpdateRequest("people2", "_doc", id);
XContentBuilder field = XContentFactory.jsonBuilder().startObject().field("name", name).field("age", age).field("date", date).endObject();
updateRequest.doc(field);
UpdateResponse updateResponse = client.update(updateRequest).get();
return new ResponseEntity(updateResponse.getResult().toString(), HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* 复杂查询
* @param name
* @param ltAge
* @param gtAge
* @return
*/
@PostMapping("queryInfo")
public ResponseEntity queryInfo(@RequestParam(name = "name") String name, @RequestParam(name = "ltAge") Integer ltAge, @RequestParam(name = "gtAge") String gtAge) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.matchQuery("name", name));
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("age").from(ltAge).to(gtAge);
boolQuery.filter(rangeQueryBuilder);
SearchResponse searchResponse = client.prepareSearch("people2").setTypes("_doc").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(boolQuery).setFrom(0).setSize(10).get();
List<Map<String, Object>> list = new ArrayList<>();
for (SearchHit hit : searchResponse.getHits()) {
list.add(hit.getSourceAsMap());
}
return new ResponseEntity(list, HttpStatus.OK);
}
}