티스토리 뷰
public List<ElasticVO > searchElastic(Map<String, Object> paramMap) {
elasticVOcontent = new ElasticVO ();
List<ElasticVO > contents = new ArrayList<>();
List<SearchHit> list = null;
try(RestHighLevelClient client = config.client()) {
String indexName = "indexName";
BoolQueryBuilder query = QueryBuilders.boolQuery();
String searchName= MapUtils.getString(paramMap, "searchName", "");
String searchKwon = MapUtils.getString(paramMap, "searchKwon", "");
String searchEmail= MapUtils.getString(paramMap, "searchEmail", "");
String searchYear= MapUtils.getString(paramMap, "searchYear", "");
int searchPage = MapUtils.getInteger(paramMap, "searchPage", 0);
if (StringUtils.isNotEmpty(searchName)) {
query.must(QueryBuilders.termQuery("name.keyword", searchName));
}
if (StringUtils.isNotEmpty(searchKwon)) {
query.must(QueryBuilders.termQuery("kwon.keyword", searchKwon));
}
if (StringUtils.isNotEmpty(searchEmail)) {
query.must(QueryBuilders.termQuery("email.keyword", searchEmail));
}
if (StringUtils.isNotEmpty(searchYear)) {
query.must(QueryBuilders.termQuery("year.keyword", searchYear));
}
if (searchPage > 0) {
query.must(QueryBuilders.matchQuery("page", searchPage));
}
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(indexName);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(query);
searchRequest.source(searchSourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] results = response.getHits().getHits();
list = Arrays.asList(results);
ElasticVO elasticVO= null;
for(SearchHit hit : list) {
String sourceAsString = hit.getSourceAsString();
if (StringUtils.isNotEmpty(sourceAsString)) {
ElasticVO = mapper.readValue(sourceAsString, ElasticVO .class);
contents.add(elasticVO);
}
}
} catch(Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
return contents;
}
엘라스틱 서치 컬럼명 뒤에 .keyword가 붙는것은 index 생성할 때 설정할 수 있다
컬럼.keyword로 검색하게 되면 엘라스틱서치에서
형태소분석으로 검색하지 않고 sql에서 like 구문처럼 사용할 수 있다.
'Development > JAVA' 카테고리의 다른 글
[JAVA] Bearer token Authorization (0) | 2021.08.22 |
---|---|
[JAVA] URL 한글 인코딩 (0) | 2021.08.20 |
[JAVA] 페이징 pageable example (without jpa) (0) | 2021.08.20 |
[JAVA] XSS Filter Config (0) | 2021.08.03 |
Spring Boot security OAuth2 연동 (1) | 2021.07.27 |
댓글
링크
최근에 올라온 글
- Total
- Today
- Yesterday