본문 바로가기

Elastic Stack/Elastic Search

(11)
Spring Boot - ElasticSearch RestHighLevelClient 인기검색어(일간,주간,월간) API 구현하기 1. 검색 시 검색 쿼리 로깅하기 제일 먼저, 검색 성공 시(검색 결과 건수가 0건 이상일 때) "query-log"라는 인덱스에 로그 데이터를 추가합니다. 먼저, 로그를 추가하는 메서드입니다. @Override public void putSearchLog(String query,String memberId) throws Exception { String indexName = "query-log"; IndexRequest request = new IndexRequest(indexName); request.id(); Map doc = new HashMap(); doc.put("query", query); doc.put("memberId", memberId); Date date = new Date(Syste..
Spring Boot - ElasticSearch RestHighLevelClient 검색 결과 하이라이팅 (HighlightBuilder) RestHighLevelClient의 HighlightBuilder를 이용하여 검색 결과를 하이라이팅 처리해보겠습니다. Map resultMap = new HashMap(); try { SearchRequest searchRequest = new SearchRequest("combook*"); // 인덱스명 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.size(10000); searchSourceBuilder.timeout(new TimeValue(60,TimeUnit.SECONDS)); searchSourceBuilder.query(QueryBuilders.matchQuery("title"..
[ElasticSearch] 엘라스틱 서치 windows nori 형태소 분석기(nori tokenizer) 설치하기 nori 형태소 분석기 설치는 매우 간단합니다. 1. 현재 엘라스틱서치가 실행 중이라면 종료합니다. 2. 관리자모드로 명령프롬프트를 실행시킵니다. 3. 엘라스틱 서치 실행 경로 밑에 bin 경로로 이동합니다. 4. elasticsearch-plugin 모듈을 통하여 설치를 진행합니다. C:\dev\elasticsearch-7.14.1\bin> elasticsearch-plugin install analysis-nori 설치가 완료되었습니다. 간단한 테스트를 통하여 정상적으로 설치되었는지 확인할 수 있습니다. 5. 테스트 저는 postman 프로그램으로 요청하여 테스트를 해보겠습니다. 먼저 standard tokenizer를 통하여 기존 분석 값을 확인합니다. 결과 확인 { "tokens": [ { "to..
Spring Boot - ElasticSearch RestHighLevelClient 범위 검색하기 (rangeQuery) RestHighLevelClient의 rangeQuery를 사용하여 범위 검색하는 예제를 다뤄보겠습니다. Controller @RestController public class TestController { @Autowired TestService testService; @RequestMapping("/test/test.do") Map test() throws Exception{ return testService.doSearch(); } } RestController 어노테이션을 통해 리턴되는 값을 JSON형태로 화면에 출력하도록 하였습니다. 1. ~~ 이상 ~~ 이하 쿼리 Service @Service public class TestServiceImpl implements TestService{ @Au..
Spring Boot - ElasticSearch RestHighLevelClient like 검색하기(queryStringQuery) DB를 조회하는 SQL 에는 where 조건에 like 검색을 할 수 있습니다. ElasticSearch에서도 like 검색을 구현할 수 있습니다. 먼저 SQL문으로 쿼리를 실행하여 결과를 확인해 보겠습니다. SELECT * FROM combook c where TITLE like '%피노%'; 1건이 도출됩니다. rest high level client 를 사용하여 테스트를 진행해보도록 하겠습니다. like검색을 생각 하지 않고 그대로 검색 요청을 해보겠습니다. @Override public Map doSearch() throws Exception { Map resultMap = new HashMap(); try { SearchRequest searchRequest = new SearchRequest(..
Spring Boot - ElasticSearch RestHighLevelClient 쿼리 연산자 활용하여 검색하기(queryStringQuery) @Override public Map doSearch() throws Exception { Map resultMap = new HashMap(); try { SearchRequest searchRequest = new SearchRequest("combook*"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.size(10000); searchSourceBuilder.timeout(new TimeValue(60,TimeUnit.SECONDS)); BoolQueryBuilder boolQuery = new BoolQueryBuilder(); boolQuery.must(QueryBuilders...
Spring Boot - ElasticSearch RestHighLevelClient Index관련 개발하기 (rest high level client CRUD) 1. 인덱스 생성하기 CreateIndexRequest request = new CreateIndexRequest("TestIndex"); // 인덱스 명 // mapping 설정 Map message = new HashMap(); message.put("type", "text"); Map properties = new HashMap(); properties.put("message", message); Map mapping = new HashMap(); mapping.put("properties", properties); request.mapping(mapping); // 인덱스 생성 client.indices().create(request, RequestOptions.DEFAULT); 여기서 mappi..
Spring Boot - ElasticSearch RestHighLevelClient 검색 조건 중첩하기 지난 게시글에서는 검색 정렬에 대해서 다뤄봤습니다. 2021.10.17 - [Elastic Stack/Elastic Search] - Spring Boot - ElasticSearch RestHighLevelClient 특정 필드로 정렬하기 Spring Boot - ElasticSearch RestHighLevelClient 특정 필드로 정렬하기 엘라스틱 서치의 RestHighLevelClient를 사용하여 검색 결과 문서의 정렬하는 방법을 소개하겠습니다. 소스코드 먼저 살펴보겠습니다. Controller @RestController public class TestController { @Autowired Re.. super-devstory.tistory.com 이번에는 검색 조건을 거는 부분. 검색 조..