새로 배운 내용
집계나 조건 검색 할때 query 보다 필터가 더 빠름
이유는 필터는 100% 일치하는 문서만 반환하는 데 비해 쿼리는 입력값과 비슷한 문서도 검색 하고 점수계산을 시행함.
(+) 필터의 이점은 자주 사용하는 필터는 엘라스틱이 자동으로 캐시해준다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
여러개의 필터(조건)를 걸려면 부울 쿼리 사용
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
{
"bool" : {
"must" : [],
"should" : [],
"must_not" : [],
"filter": []
}
}
부울 쿼리에서 사용되는 모드
- must
- All of these clauses must match. The equivalent of AND.
- must 안에 있는 쿼리들은 모두 일치해야 함.
- must_not
- All of these clauses must not match. The equivalent of NOT.
- must_not 안에 있는 쿼리들은 일치하지 않아야 함
- should
- At least one of these clauses must match. The equivalent of OR.
- should 쿼리중 n개 이상 매치되어야 함. minimum_should_match 로 최소 몇개가 매치되어야 하는지 조절할 수 있음.
- filter
- Clauses that must match, but are run in non-scoring, filtering mode.
- must match 같이 동작하지만 점수 계산 안 함.