Query dsl - 2

LEE_DEV_LOG·2022년 2월 6일
0

Bool 쿼리내에 여러개의 쿼리를 넣을 수 있다.
must must_not should filter
should 는 must, must_not 에 의해서 걸러진 결과에 점수를 부여함

// lazy dog 도 있어야 하고 quick도 있어야 함

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "quick"
          }
        },
        {
          "match_phrase": {
            "message": "lazy dog"
          }
        }
      ]
    }
  }
}

// lazy dog 는 없어야 하고 quick도 있어야 함

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "quick"
          }
        }
      ],
      "must_not": [
        {
          "match_phrase": {
            "message": "lazy dog"
          }
        }
      ]
    }
  }
}

// should 는 검색 결과에 영향을 주지 않고 fox 를 포함하는 단어 중
// lazy 가 포함된 도큐먼트에 가중치를 준다.

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "fox"
          }
        }
      ],
      "should": [
        {
          "match": {
            "message": "lazy"
          }
        }
      ]
    }
  }
}

GET my_index/_search

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "fox"
          }
        },
        {
          "match": {
            "message": "quick"
          }
        }
      ]
    }
  }
}

// filter 는 점수에 영향을 주지 않는다.
// 따라서 fox만 검색 했을 때와 스코어 점수가 동일 하다.

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "fox"
          }
        }
      ],
      "filter": [
        {
          "match": {
            "message": "quick"
          }
        }
      ]
    }
  }
}

Range 검색

POST phones/_bulk
{"index":{"_id":1}}
{"model":"Samsung GalaxyS 5","price":475,"date":"2014-02-24"}
{"index":{"_id":2}}
{"model":"Samsung GalaxyS 6","price":795,"date":"2015-03-15"}
{"index":{"_id":3}}
{"model":"Samsung GalaxyS 7","price":859,"date":"2016-02-21"}
{"index":{"_id":4}}
{"model":"Samsung GalaxyS 8","price":959,"date":"2017-03-29"}
{"index":{"_id":5}}
{"model":"Samsung GalaxyS 9","price":1059,"date":"2018-02-25"}
GET phones/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 700,
        "lte": 900
      }
    }
  }
}

GET phones/_search
{
  "query": {
    "range": {
      "date": {
        "gt": "2016-01-01",
        "lt": "2017-01-01"
      }
    }
  }
}
profile
LEE_DEV_LOG

0개의 댓글