ElasticSearch QueryDSL을 써서 검색하기
1) match_all : 모든 내용을 가져오고 싶을때
match_none : 모든 내용을 가져오고 싶지 않을때
{
"query":{
"match_all":{}
}
}
2) match
match 쿼리는 기본 필드 검색 쿼리로써, 텍스트/숫자/날짜를 허용합니다.
아래는 address에 mill이라는 용어가 있는 모든 document를 조회하는 예제입니다.
{
"query":{
"match":{
"address":"mill"
}
}
}
3) bool
bool 쿼리는 bool( true / false ) 로직을 사용하는 쿼리이며, 그 종류는 다음과 같습니다.
- must : bool must 절에 지정된 모든 쿼리가 일치하는 document를 조회
- should : bool should 절에 지정된 모든 쿼리 중 하나라도 일치하는 document를 조회
- must_not : bool must_not 절에 지정된 모든 쿼리가 모두 일치하지 않는 document를 조회
- filter : must와 같이 filter 절에 지정된 모든 쿼리가 일치하는 document를 조회하지만, Filter context에서 실행되기 때문에 score를 무시합니다.
아래는 나이가 40세이지만, ID 지역에 살고 있지 않은 document를 조회하는 예제입니다.
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
4) range
range 쿼리는 범위를 지정하여 범위에 해당하는 값을 갖는 document를 조회합니다.
앞에서 살펴본 바와 같이 Filter Context이며, 정수, 날짜를 비교할 수 있습니다.
range 쿼리에서 범위를 지정하는 파라미터는 다음과 같습니다.
- gte : 크거나 같다.
- gt : 크다.
- lte : 작거나 같다.
- lt : 작다.
- boost : 쿼리의 boost 값을 셋팅합니다. ( 기본 값 1.0 )
- boost란 검색에 가중치를 부여하는 것으로, 를 참고하시길 바랍니다.
아래는 잔액이 20000~30000인 범위에 속하는 document를 조회하는 예제입니다.
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
Author And Source
이 문제에 관하여(ElasticSearch QueryDSL을 써서 검색하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@courage331/ElasticSearch-QueryDSL을-써서-검색하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)