(ElasticSearch) Query 와 Filter차이

* Query vs Filter

1. Query는 스코어 값에 영향을 미치고, Filter는 스코어 값에 영향을 미치지 않는다.
2. Query는 캐싱되지 않고, Filter는 캐싱되므로 Filter가 성능면에서 유리하다.

한마디로, 스코어 값이 필요할 경우는 Query를 이용하고, 스코어 값이 필요하지 않은 경우에는 Filter를 이용하면 된다.


간단히 정리하자면

Filter : RDBMS를 이용할 때 사용했던 WHERE절 구문은 ElasticSearch의 Filter에 해당한다.

일반적으로 ElasticSearch를 처음 이용할 때 , 내가 원하는 결과를 추려내기 위해서 Query문을 이용하는 경우가 많다.
하지만 RDBMS의 where절 조건은 filter에 해당한다.

왜냐하면 , 전체결과에서 원하는 결과를 추려내는 작업이라는 점에서 개념이 동일하고, 성능 면에서도 유리하며, 예상치 못한결과를 얻게되는 일이 없기 때문이다.

* Query

엘라스틱 서치에서 말하는 Query는 일반적인 SQL query의 개념과 다소 차이가 있다.
검색이라는 것은 단ㄴ순히 '이러한 조건을 만족하는 레코드를 찾아라' 라는 개념을 넘어서 
'가장 적합하고 유사성(스코어)이 높은  결과를 찾아라'라는 개념이 포함되어 있다.

이미 tokenizing, analyzing과정을 거쳐서 인덱싱 되어있는 데이터로 부터 검색 문자열에 해당하는 가장 유사성 높은 결과를 반환 하는 것은 기존 SQL 문으로는 한계가 있었던 점이고,
이를 해결하기 위한 것이 바로 루씬 검색엔진을 기반으로 한 것이다.

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬