elastic fields

개발새발·2021년 12월 12일
0

elasticsearch

목록 보기
7/54

elasticsearch 를 하면서, 특정 필드들만 추출해야하는 경우가 있었다. RDB에서 사용하던 select 같은 애가 필요했다. 찾아보니 fields 라는 옵션이 있었다. 오늘은 fields 쿼리에 대해 정리해보고자 한다.


📦Fields

검색 응답에서 특정 필드를 검색하기 위한 옵션.
_source 안에서 값을 찾고, 매핑을 사용하여 구문을 분석하고 포멧형식을 정한다. 여기서 주의할 점은 fields옵션으로 검색 결과 후 모든 필드들의 값들이 항상 array형태로 온다는 것이다. 또한 특정 순서대로 오는 것을 보장하지 못한다.

사용 예시)

[검색]

POST my-index/_search
{
  "query": {
    "match": {
      "user.id": "kimchy"
    }
  },
  "fields": [
    "user.id",
    "http.response.*", // wildcard 를 사용하여 특정 단어가 들어간 필드를 지정하여 노출시킬 수 있다.  
    {
      "field": "@timestamp",
      "format": "epoch_millis" // 특정 필드 값의 포멧을 지정하여 노출시킬 수 있다.
    }
  ],
  "_source": false
}

[검색 결과]

{
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "my-index-000001",
        "_id" : "0",
        "_score" : 1.0,
        "_type" : "_doc",
        "fields" : {
          "user.id" : [
            "kimchy"
          ],
          "@timestamp" : [
            "4098435132000"
          ],
          "http.response.bytes": [
            1070000
          ],
          "http.response.status_code": [
            200
          ]
        }
      }
    ]
  }
}
profile
발새발개

0개의 댓글