드디어! RESTful API로 데이터 검색을 시도한다.
localhost:9200/<_index>/_search
q는 query를 넣는 parameter이고, pretty는 결과를 보기 좋게 만들어주는 parameter이다. 사실 postman 자체에서 pretty가 가능하기 때문에 postman에서 결과를 확인할 때에는 포함하지 않아도 괜찮다.
어쨌든, 현재 query의
DestWeather:Cloudy
는 DestWeather의 값이 Cloudy인 모든 도큐먼트들을 리턴시킨다.
그렇다면, 다양한 조건으로 검색할 수는 없을까?
Lucene Query를 잘 이용하면 다양한 형태의 데이터 검색이 가능해진다!
ElasticSearch는 정보 검색 라이브러리인 Lucene 기반으로 만들어진 검색 엔진이기 때문에 이와 같은 방법이 가능한 것이다.
Lucene Query Syntax에 관한 설명은 이곳에서 파악할 수 있다.
현재 query의
OriginCityName:(Venice OR Bergamo)
는 (다들 아시겠지만) Venice 또는 Bergamo를 OriginCityName의 값으로 갖고 있는 도큐먼트들을 리턴시킨다.
다음으로, 현재 query의
FlightNum:Z*
는 FlightNum의 값이 Z로 시작하는 모든 도큐먼트들을 리턴시킨다.
그렇다면, 여러 field에 대해 검색도 가능할까?
가능하다! 현재 query의
(FlightNum:Z* AND DestCountry:US)
는 FlightNum의 값이 Z로 시작하고 DestCountry가 US인 모든 도큐먼트들을 리턴시킨다.
또한, 데이터 타입이 숫자인 field의 경우에는 범위 검색도 가능하다.
현재 query의
AvgTicketPrice:[900 TO 1000]
는 AvgTicketPrice의 값이 900이상, 1000 이하인 모든 도큐먼트들을 리턴시킨다.