# 서브쿼리같은 elastice query 구문 만들기

**URL:** <https://discuss.elastic.co/t/elastice-query/281000>\
**Category:** 한국어 질문 및 토론\
**Created:** [August 11, 2021, 7:11am UTC](https://discuss.elastic.co/t/elastice-query/281000 "2021-08-11T07:11:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ruddms](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruddms/32/92823_2.png) [@ruddms](https://discuss.elastic.co/u/ruddms)\
**Post date:** [August 11, 2021, 7:11am UTC](https://discuss.elastic.co/t/elastice-query/281000/1 "2021-08-11T07:11:46Z")

</div>

안녕하세요 document id값으로 해당 document의 embedVector 필드 (type은 dense\_vector)의 값을 알아내고 알아낸 embedVector 필드 값으로 script\_score 사용해서 index에 존재하는 모든 document의 embedVector 필드와 cosineSimilarity를 계산하고 싶은데 이런 과정을 하나의 쿼리로 작성할 수 있을까요?

코드 1번

```auto
GET doc-index-1/_search
    {
        "query" : {
            "match": {"_id": "20170802174341ddb44f23e95a9b55d392a2a7be8c3672"}
        },
        "_source": {"includes": ["embedVector"]}
    }

```

코드 2번

```auto
GET doc-index-1/_search
{
  "query": {
    "script_score": {
      "query": {
        "bool": {
          "filter": [
            {
              "exists": {
                "field": "embedVector"
              }
            }
          ]
        }
      },
      "script": {
                  "source": "cosineSimilarity(params.embedVector,'embedVector') + 1.0",
        "params": {
          "embedVector": [-1, -0.03917490318417549, 0.1107381135225296]
            }
          }
        }
      },
      "_source": {"includes": ["_id", "_score"]},
      "size": 5
    }

```

정리하자면 코드 1번과 코드 2번을 하나의 쿼리문으로 작성하고 싶습니다!  
( 코드 2번에 params.embedVector에 바로 코드 1번 query 결과인 [\_source][embedVector] 입력 )

감사합니다.

---

<div class="post-metadata">

**Author:** ![insuk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/insuk/32/29396_2.png) [@insuk](https://discuss.elastic.co/u/insuk)\
**Post date:** [August 12, 2021, 3:48am UTC](https://discuss.elastic.co/t/elastice-query/281000/2 "2021-08-12T03:48:36Z")

</div>

아래 API로 doc-index-1의 전체 매핑 정보를 알 수 있을까요?

`GET doc-index-1/_mapping`

그리고 샘플 document를 주시면 이해하는데 도움이 되겠습니다.

---

<div class="post-metadata">

**Author:** ![ruddms](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruddms/32/92823_2.png) [@ruddms](https://discuss.elastic.co/u/ruddms)\
**Post date:** [August 13, 2021, 6:44am UTC](https://discuss.elastic.co/t/elastice-query/281000/3 "2021-08-13T06:44:18Z")

</div>

GET doc-index-1/\_mapping

```auto
{
  "doc-index-1" : {
    "mappings" : {
      "properties" : {
        "contents" : {
          "type" : "text",
          "fields" : {
            "ch" : {
              "type" : "text",
              "analyzer" : "smartcn"
            },
            "en" : {
              "type" : "text",
              "analyzer" : "english"
            },
            "jp" : {
              "type" : "text",
              "analyzer" : "japan"
            },
            "kr" : {
              "type" : "text",
              "analyzer" : "korea"
            }
          }
        },
        "createAccountId" : {
          "type" : "keyword"
        },
        "embedVector" : {
          "type" : "dense_vector",
        },
        "indexDate" : {
          "type" : "date",
          "format" : "yyyy-MM-dd'T'HH:mm:ssZ||yyyyMMdd'T'HHmmssZ||epoch_millis"
        }
      }
    }
  }
}

```

sample document

```auto
{
  "_index": "doc-index-1",
  "_type": "_doc",
  "_id": "20210715172324512840c10781fa80663b6659845d7275",
  "_version": 7,
  "_score": null,
  "_source": {
    "createAccountId": "kimfdsfssb",
    "embedVector": [
      0.02534344792366028,
      -0.03346047177910805,
      0.03037850186228752
    ],
    "contents": "안\n\n관리 용이\n성능 관련 경고 알림\n성능 현황 및 로그 모니터링\n백업 현황 모니터링\n\n\n백업 스케줄\n다양한 스케줄 유형 제공\n( 매 시/일/주/월 )\n\n10\n매시, 매일, 매주, 매월 백업 스케쥴을 지정하여 고객사에 적합한 일정으로 백업 기능을 제공\n원본 폴더 구조 그대로 스냅샷을 남겨 전체적인 폴더 구조 유지\n초기 풀 백업 후 이후 용량은 증분 백업 형태로 진행하여 효율적인 용량 관리\n\n데이터 백업 방안\n랜섬웨어와 같은 파일 손상 시 감염 파일 삭제 후 스냅샷 구조의 백업 폴더 트리 그대로 복사하여 이전 파일로 복구\n원하는 날짜 그대로 조회하여 파일 복원이 가능\n\n데이터 복구 방안\n\n\n\n\n\n\n\n\n\n10\n\n",
    "indexDate": "2021-07-15T15:38:05+0000"
  }
}

```

감사합니다!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [September 10, 2021, 6:44am UTC](https://discuss.elastic.co/t/elastice-query/281000/4 "2021-09-10T06:44:57Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
