kcsc-back-end <> kcsc-opensearch 통신 작업 완료
kcsc-opensearch <> opensearch 배포서버 세팅중.thkim
parent
d0f17a8086
commit
a7e798d5d7
|
|
@ -89,6 +89,10 @@ dependencies {
|
|||
|
||||
implementation 'org.apache.commons:commons-lang3'
|
||||
|
||||
// https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5
|
||||
implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.3.1'
|
||||
// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
|
||||
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,9 @@ public class SecurityConfig {
|
|||
/* 기준코드 조회 */
|
||||
"/standardCode/**",
|
||||
|
||||
/* 통합검색 요청 */
|
||||
"/search/doc",
|
||||
|
||||
/* 관련사이트 이미지 조회 */
|
||||
"/admin/config/get-site-image/**"
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.dbnt.kcscbackend.search;
|
||||
|
||||
import com.dbnt.kcscbackend.search.model.DocTitle;
|
||||
import com.dbnt.kcscbackend.search.service.SearchService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/search")
|
||||
public class SearchController {
|
||||
|
||||
private final SearchService searchService;
|
||||
|
||||
@RequestMapping("/doc")
|
||||
public JSONArray searchDoc(
|
||||
@RequestParam(value="target", required = true) String target,
|
||||
@RequestParam(value="searchText", required = true) String text,
|
||||
@RequestParam(value="pageNum", required = false, defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(value="pageSize", required = false, defaultValue = "15") Integer pageSize
|
||||
){
|
||||
return searchService.searchRequest(target, text, pageNum, pageSize);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.dbnt.kcscbackend.search.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
|
||||
public class DocContent {
|
||||
|
||||
private Integer id;
|
||||
|
||||
private String kcscCd;
|
||||
|
||||
private String docNm;
|
||||
|
||||
private String docYr;
|
||||
|
||||
private String groupTitle;
|
||||
|
||||
private String tableContent;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.dbnt.kcscbackend.search.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class DocIndex {
|
||||
|
||||
private Integer id;
|
||||
|
||||
private String kcscCd;
|
||||
|
||||
private String docNm;
|
||||
|
||||
private String docYr;
|
||||
|
||||
private String groupTitle;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.dbnt.kcscbackend.search.model;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class DocTitle {
|
||||
|
||||
private Integer id;
|
||||
|
||||
private String kcscCd;
|
||||
|
||||
private String docNm;
|
||||
|
||||
private String docYr;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.dbnt.kcscbackend.search.service;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import org.apache.hc.client5.http.classic.methods.HttpGet;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
|
||||
import org.apache.hc.client5.http.impl.classic.HttpClients;
|
||||
import org.apache.hc.core5.http.ParseException;
|
||||
import org.apache.hc.core5.http.io.entity.EntityUtils;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SearchService {
|
||||
|
||||
|
||||
public JSONArray searchRequest(String target, String text, Integer pageNum, Integer pageSize) {
|
||||
String uri = "http://localhost:8090";
|
||||
switch (target){
|
||||
case "title": uri+="/doc-search/doc-title?";break;
|
||||
case "index": uri+="/doc-search/doc-index?";break;
|
||||
case "content": uri+="/doc-search/doc-content?";break;
|
||||
}
|
||||
String param = "searchText="+URLEncoder.encode(text, StandardCharsets.UTF_8)+"&pageNum="+pageNum+"&pageSize="+pageSize;
|
||||
try{
|
||||
CloseableHttpClient httpClient = HttpClients.createDefault();
|
||||
HttpGet httpGet = new HttpGet(uri+param);
|
||||
httpGet.addHeader("User-Agent", "Mozilla/5.0");
|
||||
httpGet.addHeader("Content-type", "application/json;charset=UTF-8");
|
||||
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
|
||||
String json = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
|
||||
return (JSONArray)new JSONParser().parse(json);
|
||||
} catch (IOException | ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -33,3 +33,8 @@ logging.level.com.atoz_develop.mybatissample.repository=TRACE
|
|||
Globals.posblAtchFileSize=5242880
|
||||
Globals.fileStorePath=D:\\kcscUploadFiles
|
||||
Globals.addedOptions=false
|
||||
|
||||
#JWT
|
||||
# redisConfig
|
||||
spring.redis.host=localhost
|
||||
spring.redis.port=6379
|
||||
|
|
@ -36,3 +36,8 @@ logging.level.com.atoz_develop.mybatissample.repository=info
|
|||
Globals.posblAtchFileSize=5242880
|
||||
Globals.fileStorePath=/kcscUploadFiles
|
||||
Globals.addedOptions=false
|
||||
|
||||
#JWT
|
||||
# redisConfig
|
||||
spring.redis.host=localhost
|
||||
spring.redis.port=6479
|
||||
|
|
@ -6,10 +6,6 @@ spring.mvc.pathmatch.matching-strategy=ant_path_matcher
|
|||
Globals.pageUnit=10
|
||||
Globals.pageSize=10
|
||||
|
||||
#JWT
|
||||
# redisConfig
|
||||
spring.redis.host=localhost
|
||||
spring.redis.port=6379
|
||||
# secret key
|
||||
Globals.jwt.secret = qWwMroux3QtiIJcPSIZARNTZEBBnWVH0jZ2Lx7tfFChCYi0ViZllo1bekZdiU0B3FRjJI7g90n0ha120dwlz8JZU8rOkmNCe9Uq0
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package com.dbnt.kcscopensearch.indexing;
|
||||
|
||||
import com.dbnt.kcscopensearch.kcsc.docView.model.DocContentView;
|
||||
import com.dbnt.kcscopensearch.kcsc.docView.model.DocIndexView;
|
||||
import com.dbnt.kcscopensearch.kcsc.docView.model.DocTitleView;
|
||||
import com.dbnt.kcscopensearch.kcsc.docView.service.DocViewService;
|
||||
import com.dbnt.kcscopensearch.opensearch.docSearch.model.DocContent;
|
||||
import com.dbnt.kcscopensearch.opensearch.docSearch.model.DocIndex;
|
||||
import com.dbnt.kcscopensearch.opensearch.docSearch.model.DocTitle;
|
||||
import com.dbnt.kcscopensearch.opensearch.docSearch.service.DocSearchService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/indexing")
|
||||
public class IndexingController {
|
||||
private final DocViewService docViewService;
|
||||
private final DocSearchService docSearchService;
|
||||
|
||||
@GetMapping("/doc-title")
|
||||
public String getTitleIndexing(){
|
||||
List<DocTitleView> titleViewList = docViewService.selectAllDocTitle();
|
||||
List<DocTitle> titleList = new ArrayList<>();
|
||||
for(DocTitleView view: titleViewList){
|
||||
titleList.add(new DocTitle(view));
|
||||
}
|
||||
docSearchService.saveDocTitle(titleList);
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@GetMapping("/doc-index")
|
||||
public String getIndexIndexing(){
|
||||
List<DocIndexView> indexViewList = docViewService.selectAllDocIndex();
|
||||
List<DocIndex> indexList = new ArrayList<>();
|
||||
for(DocIndexView view: indexViewList){
|
||||
indexList.add(new DocIndex(view));
|
||||
}
|
||||
docSearchService.saveDocIndex(indexList);
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@GetMapping("/doc-content")
|
||||
public String getContentIndexing(){
|
||||
List<DocContentView> contentViewList = docViewService.selectAllDocContent();
|
||||
List<DocContent> contentList = new ArrayList<>();
|
||||
for(DocContentView view: contentViewList){
|
||||
contentList.add(new DocContent(view));
|
||||
}
|
||||
docSearchService.saveDocContent(contentList);
|
||||
return "OK";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -20,15 +20,24 @@ public class DocSearchController {
|
|||
private final DocSearchService docSearchService;
|
||||
|
||||
@GetMapping(value="/doc-title", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public List<DocTitle> searchTitle (@RequestParam(value="searchText", required = true) String text, @RequestParam(value="pageNum", required = true) Integer pageNum){
|
||||
return docSearchService.selectDocTitle(text, pageNum);
|
||||
public List<DocTitle> searchTitle (
|
||||
@RequestParam(value="searchText", required = true) String text,
|
||||
@RequestParam(value="pageNum", required = false, defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(value="pageSize", required = false, defaultValue = "15") Integer pageSize){
|
||||
return docSearchService.selectDocTitle(text, pageNum, pageSize);
|
||||
}
|
||||
@GetMapping(value="/doc-index", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public List<DocIndex> searchIndex (@RequestParam(value="searchText", required = true) String text, @RequestParam(value="pageNum", required = true) Integer pageNum){
|
||||
return docSearchService.selectDocIndex(text, pageNum);
|
||||
public List<DocIndex> searchIndex (
|
||||
@RequestParam(value="searchText", required = true) String text,
|
||||
@RequestParam(value="pageNum", required = false, defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(value="pageSize", required = false, defaultValue = "15") Integer pageSize){
|
||||
return docSearchService.selectDocIndex(text, pageNum, pageSize);
|
||||
}
|
||||
@GetMapping(value="/doc-content", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public List<DocContent> searchContent (@RequestParam(value="searchText", required = true) String text, @RequestParam(value="pageNum", required = true) Integer pageNum){
|
||||
return docSearchService.selectDocContent(text, pageNum);
|
||||
public List<DocContent> searchContent (
|
||||
@RequestParam(value="searchText", required = true) String text,
|
||||
@RequestParam(value="pageNum", required = false, defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(value="pageSize", required = false, defaultValue = "15") Integer pageSize){
|
||||
return docSearchService.selectDocContent(text, pageNum, pageSize);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,15 +123,15 @@ public class DocSearchService {
|
|||
log.info("contentIndexing end");
|
||||
}
|
||||
|
||||
public List<DocTitle> selectDocTitle(String text, Integer pageNum) {
|
||||
return titleRepository.findByDocNmContains(text, PageRequest.of(pageNum, 20));
|
||||
public List<DocTitle> selectDocTitle(String text, Integer pageNum, Integer pageSize) {
|
||||
return titleRepository.findByDocNmContains(text, PageRequest.of(pageNum, pageSize));
|
||||
}
|
||||
|
||||
public List<DocIndex> selectDocIndex(String text, Integer pageNum){
|
||||
return indexRepository.findByGroupTitleContains(text, PageRequest.of(pageNum, 20));
|
||||
public List<DocIndex> selectDocIndex(String text, Integer pageNum, Integer pageSize){
|
||||
return indexRepository.findByGroupTitleContains(text, PageRequest.of(pageNum, pageSize));
|
||||
}
|
||||
|
||||
public List<DocContent> selectDocContent(String text, Integer pageNum){
|
||||
return contentRepository.findByTableContentContains(text, PageRequest.of(pageNum, 20));
|
||||
public List<DocContent> selectDocContent(String text, Integer pageNum, Integer pageSize){
|
||||
return contentRepository.findByTableContentContains(text, PageRequest.of(pageNum, pageSize));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class IndexingScheduler {
|
|||
private final DocViewService docViewService;
|
||||
private final DocSearchService docSearchService;
|
||||
|
||||
@Scheduled(cron = "40 18 23 * * *")
|
||||
/*@Scheduled(cron = "40 18 23 * * *")
|
||||
public void viewIndexing(){
|
||||
Map<String, List<?>> viewDataMap = docViewService.selectAllView();
|
||||
Map<String, List<?>> indexingDataMap = new HashMap<>();
|
||||
|
|
@ -57,12 +57,10 @@ public class IndexingScheduler {
|
|||
}
|
||||
|
||||
docSearchService.save(indexingDataMap);
|
||||
}*/
|
||||
|
||||
//docSearchService.save(indexingDataMap);
|
||||
}
|
||||
|
||||
@Scheduled(cron = "40 20 23 * * *")
|
||||
public void titleIndexing(){
|
||||
@Scheduled(cron = "40 1 2 * * *")
|
||||
public void ScheduledTitleIndexing(){
|
||||
List<DocTitleView> titleViewList = docViewService.selectAllDocTitle();
|
||||
List<DocTitle> titleList = new ArrayList<>();
|
||||
for(DocTitleView view: titleViewList){
|
||||
|
|
@ -70,8 +68,8 @@ public class IndexingScheduler {
|
|||
}
|
||||
docSearchService.saveDocTitle(titleList);
|
||||
}
|
||||
@Scheduled(cron = "40 21 23 * * *")
|
||||
public void indexIndexing(){
|
||||
@Scheduled(cron = "40 2 2 * * *")
|
||||
public void ScheduledIndexIndexing(){
|
||||
List<DocIndexView> indexViewList = docViewService.selectAllDocIndex();
|
||||
List<DocIndex> indexList = new ArrayList<>();
|
||||
for(DocIndexView view: indexViewList){
|
||||
|
|
@ -79,8 +77,8 @@ public class IndexingScheduler {
|
|||
}
|
||||
docSearchService.saveDocIndex(indexList);
|
||||
}
|
||||
@Scheduled(cron = "40 25 23 * * *")
|
||||
public void contentIndexing(){
|
||||
@Scheduled(cron = "40 7 2 * * *")
|
||||
public void ScheduledContentIndexing(){
|
||||
List<DocContentView> contentViewList = docViewService.selectAllDocContent();
|
||||
List<DocContent> contentList = new ArrayList<>();
|
||||
for(DocContentView view: contentViewList){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
opensearch.uris=https://localhost:9200
|
||||
opensearch.username=admin
|
||||
opensearch.password=kpbP7ECsaTlgvfmaGNBtORH75QHf7TmJhHZdW7Z7
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
opensearch.uris=https://kcsc.dbnt.co.kr:9200
|
||||
opensearch.username=admin
|
||||
opensearch.password=kpbP7ECsaTlgvfmaGNBtORH75QHf7TmJhHZdW7Z7
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
spring.application.name=kcsc-opensearch
|
||||
|
||||
opensearch.uris=https://localhost:9200
|
||||
opensearch.username=admin
|
||||
opensearch.password=kpbP7ECsaTlgvfmaGNBtORH75QHf7TmJhHZdW7Z7
|
||||
server.port=8090
|
||||
|
||||
spring.datasource-kcsc.driverClassName=org.postgresql.Driver
|
||||
spring.datasource-kcsc.jdbcUrl=jdbc:postgresql://118.219.150.34:50503/kcsc
|
||||
|
|
|
|||
Loading…
Reference in New Issue