Elasticsearch nested 쿼리, 자바에서 사용하기

2021. 1. 24. 15:53Backend/☕️ Java

 

postman이나, elasticsearch head에서 아래와 같은 중첩 쿼리를 사용하면 곧바로 원하는 결과를 얻을 수(조회) 있습니다.

Java-spring framework에서 중첩 쿼리의 데이터 조회는 QueryBuilder 클래스의 nestedQuery메서드를 통해 가능합니다.

Spring 에서 중첩쿼리를 이용한 데이터 조회 방법을 바로 알아보겠습니다.

license의 test_type중 값이 '정보처리기사'인 데이터를 조회해보자

license라는 중첩 필드 중 test_type이 '정보처리기사'인 데이터를 조회할 수 있는 자바코드를 생성하겠습니다.

 

자바 코드입니다.

propertyValues 객체에, license.test_type 을 key 값으로, 찾고자 하는 값인 '정보처리기사'를 value 값으로 넣었습니다. 이것이 하나의 조회 조건이 됩니다. 즉, 

 

 

 

nestedQueryBuilder의 결과입니다.

nested query의 조건을 하나만 주었기에, 7번 줄에서 하나의 match만 삽입된걸 확인할 수 있습니다.

 

위에서 손으로 그린 쿼리 문 중 education 중첩 필드도 존재하는데, 위와 같은 방법으로 edu_type, start_year, end_year 필드에서 원하는 하는 값을 조회할 수 있습니다.

 

ref: stackoverflow.com/questions/24710831/elasticsearch-java-client-querying-nested-objects

 

ElasticSearch Java Client querying nested objects

How do I convert this kind of query. { "query": { "nested": { "path": "consultations", "query": { "bool": { "must": [ { "match": { ...

stackoverflow.com

 

* 수정해야할 부분이 있다면 댓글로 피드백 부탁드립니다

* 부족한 포스팅이지만 누군가에겐 도움이 되었으면 합니다. 집단지성의 힘을 믿습니다.

 

 

다음 포스팅에선 하나의 경로에서 복수개의 조건(ex: license == '정보처리기사' & '전기기사') 을 추가하는 방법을 알아보겠습니다.