From 92b5d778d23ff38778cfde06c1968b669347303e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Sat, 19 May 2018 16:56:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=A2=9E=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/AddBookController.java | 74 +++++++++++++++++++ .../Controller/GetBookController.java | 4 +- 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/main/java/top/fjy8018/elasticsearch/Controller/AddBookController.java diff --git a/src/main/java/top/fjy8018/elasticsearch/Controller/AddBookController.java b/src/main/java/top/fjy8018/elasticsearch/Controller/AddBookController.java new file mode 100644 index 0000000..88fd4f5 --- /dev/null +++ b/src/main/java/top/fjy8018/elasticsearch/Controller/AddBookController.java @@ -0,0 +1,74 @@ +package top.fjy8018.elasticsearch.Controller; + +import lombok.extern.slf4j.Slf4j; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author F嘉阳 + * @date 2018-05-19 16:33 + */ +@RestController +@RequestMapping("/add/book") +@Slf4j +public class AddBookController { + + @Autowired + private TransportClient client; + + /** + * 插入数据 + * @param title + * @param author + * @param wordCount + * @param publishDate 限定日期格式为yyyy-MM-dd + * @return + */ + @PostMapping("/novel") + public ResponseEntity add(@RequestParam(name = "title") String title, + @RequestParam(name = "author") String author, + @RequestParam(name = "word_count") int wordCount, + @RequestParam(name = "publish_date") + @DateTimeFormat(pattern = "yyyy-MM-dd") Date publishDate) { + String type = "novel"; + + // 格式化日期 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String dateStr = sdf.format(publishDate); + + try { + // 用自带的构造文档 + XContentBuilder content = XContentFactory.jsonBuilder().startObject() + .field("title",title) + .field("author",author) + .field("word_count",wordCount) + .field("publish_date",dateStr) + .field("type",type) + .endObject(); + + IndexResponse response = this.client.prepareIndex("book",type).setSource(content).get(); + + // 返回结果带上新增的ID + return new ResponseEntity(response.getId(), HttpStatus.OK); + } catch (IOException e) { + e.printStackTrace(); + log.error("【title】"+title+"【author】"+author+"【wordCount】"+wordCount+"【publishDate】"+publishDate); + return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); + } + + } +} diff --git a/src/main/java/top/fjy8018/elasticsearch/Controller/GetBookController.java b/src/main/java/top/fjy8018/elasticsearch/Controller/GetBookController.java index 9e7e563..f9beb11 100644 --- a/src/main/java/top/fjy8018/elasticsearch/Controller/GetBookController.java +++ b/src/main/java/top/fjy8018/elasticsearch/Controller/GetBookController.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController; * @date 2018-05-19 16:31 */ @RestController -@RequestMapping("/get") +@RequestMapping("/get/book") @Slf4j public class GetBookController { @@ -28,7 +28,7 @@ public class GetBookController { * @param id * @return */ - @GetMapping("/book/novel") + @GetMapping("/novel") public ResponseEntity get(@RequestParam(name = "id") String id){ if (id==null){ return new ResponseEntity(HttpStatus.NOT_FOUND);