Wrapper 쿼리

Wrapper 쿼리

완전한 쿼리를 Base64 인코딩된 JSON 형식으로 제출하려면 wrapper 쿼리를 사용해요. 문자열 값만 지원하는 컨텍스트에 쿼리를 임베드해야 할 때 유용해요.

출처: 문서

본문

wrapper 쿼리는 완전한 쿼리를 Base64 인코딩된 JSON 형식으로 제출할 수 있게 해줘요. 문자열 값만 지원하는 컨텍스트에 쿼리를 임베드해야 할 때 유용해요. 이 쿼리는 시스템 제약을 다뤄야 할 때만 사용하세요. 가독성과 유지보수성을 위해 가능하면 표준 JSON 기반 쿼리를 사용하는 것이 더 좋아요.

예제 (Example)

products라는 인덱스를 다음 매핑으로 생성하세요:

PUT /products
{
  "mappings": {
    "properties": {
      "title": { "type": "text" }
    }
  }
}

샘플 문서를 인덱싱하세요:

POST /products/_bulk
{ "index": { "_id": 1 } }
{ "title": "Wireless headphones with noise cancellation" }
{ "index": { "_id": 2 } }
{ "title": "Bluetooth speaker" }
{ "index": { "_id": 3 } }
{ "title": "Over-ear headphones with rich bass" }

다음 쿼리를 Base64 형식으로 인코딩하세요:

echo -n '{ "match": { "title": "headphones" } }' | base64

인코딩된 쿼리를 실행하세요:

POST /products/_search
{
  "query": {
    "wrapper": {
      "query": "eyAibWF0Y2giOiB7ICJ0aXRsZSI6ICJoZWFkcGhvbmVzIiB9IH0="
    }
  }
}

응답에는 일치하는 두 문서가 포함돼요:

{
  ...
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 0.20098841,
    "hits": [
      {
        "_index": "products",
        "_id": "1",
        "_score": 0.20098841,
        "_source": {
          "title": "Wireless headphones with noise cancellation"
        }
      },
      {
        "_index": "products",
        "_id": "3",
        "_score": 0.18459359,
        "_source": {
          "title": "Over-ear headphones with rich bass"
        }
      }
    ]
  }
}

더 알아보기 (Learn more)