2024년 11월 09일

출처: 313DEVGRP

<aside> 📖 [LIST]

</aside>

Spring Boot 3.3

gradle.build

spring-data-elasticsearch

@Id - user필드를 만드는

Field - Keyword - 토큰 그 잡채, 검색, 집계

Request Body 검색

POST movie_search/_search
{
"query": {
  "query_string": {
    "default_field": "movieNmEn",
    "query": "movieNmEn:* OR prdtYear:2017"
  }
},
"from": 0,
"size": 5,
"sort": [
  {
    "_score": {
      "order": "desc"
    },
    "movieCd": {
      "order": "asc"
    }
  }
],
"_source": [
	  "movieCd",
	  "movieNm",
	  "mvoieNmEn",
	  "typeNm"
	]
}

Query DSL 검색

{ 
   "size" :  -- ➊
   "from" :  -- ➋
   "timeout" :  -- ➌
   "_source" : { } -- ➍
   "query" : { }   -- ➎
   "aggs" : { }  -- ➏
   "sort" : { }  -- ➐
 }

➊ 리턴받는 결과의 개수를 지정한다. 기본값은 10이다. ➋ 몇 번째 문서부터 가져올지 지정한다. 기본값은 0이며, 페이지별로 구성하려면 다음 번 문서는 10번째부터 가지고 오면 된다. ➌ 검색을 요청해서 결과를 받는 데까지 걸리는 시간을 나타낸다. timeout 시간을 너무 짧게 잡으면 전체 샤드에서 timeout을 넘기지 않은 문서만 결과로 출력되기 때문에 상황에 따라 결과의 일부만 나올 수 있다. 기본값은 무한대다. ➍ 검색 시 필요한 필드만 출력하고 싶을 때 사용한다. ➎ 검색 조건문이 들어가야 하는 공간이다. ➏ 통계 및 집계 데이터를 사용할 때 사용하는 공간이다. ➐ 문서 결과를 어떻게 출력할지에 대한 조건을 사용하는 공간이다.

{
  "took":  -- ➊
  "timed_out":  -- ➋
  "_shards": { 
    "total":  -- ➌
    "successful":  -- ➍
    "failed":  -- ➎
  },
  "hits": {
   "total":  -- ➏
   "max_score":  -- ➐
   "hits": [ ]  -- ➑
   }
 }

➊ 쿼리를 실행한 시간을 나타낸다. ➋ 쿼리 시간이 초과할 경우를 나타낸다. ➌ 쿼리를 요청한 전체 샤드의 개수를 나타낸다. ➍ 검색 요청에 성공적으로 응답한 샤드의 개수를 나타낸다. ➎ 검색 요청에 실패한 샤드의 개수를 나타낸다. ➏ 검색어에 매칭된 문서의 전체 개수를 나타낸다. ➐ 일치하는 문서의 스코어 값 중 가장 높은 값을 출력한다. ➑ 각 문서 정보와 스코어 값을 보여준다