ElasticSearch QueryDSL을 써서 검색하기

민지킴·2021년 7월 2일
0

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
          }
        }
      }
    }
  }
}
profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글