• Pretty Results
    • 요청할 때 ?pretty=true 를 붙여주면 JSON 결과를 보기 좋게 변경해준다. 
  • Human readable output
    • query string에 ?human=false 를 붙여주면 사람이 사용하는 용도가 아닌 모니터링 도구에 의해 사용될 때 의미 있는 통계 결과가 나온다.  
  • Date Math
    • gt & lt -> range query에서 사용
    • from & to -> aggregations 에서 사용 
    • +1h , -1d , /d 
      • ex) now-1h
    • y = years, M = months, w = weeks, d = days, h = hours, H = hours, m = minutes, s = seconds
  • Response Filtering
    • Elasticsearch가 반환하는 응답 개수?내용?을 줄이기 위해 filter_path를 사용하는데 딱 필요한 데이터만 받고 싶을때 사용 가능함
    • 사용 예) took, hits._id 만 필요로 하는 경우
      • GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
      • Response
        • { "took" : 3, "hits" : { "hits" : [ { "_id" : "0", "_score" : 1.6375021 } ] } }
    • wildcard (* , **) 사용 가능
    • - 사용가능
      • GET /_count?filter_path=-_shards
  • Flat Setting
    • ?flat_settings=true 해주면 결과가 flat하게 나온다 (기계가 더 이해하기 쉬운 버젼으로)
    • 근데 flat_settings=false (기본) 이랑 비교해봤을 때 나름의 매력이 또 있는 것 같음 ㅋㅋ
  • Enabling stack traces
    • 에러가 났을 때 ?size=surprise_me를 query string에 붙여 주면 아래와 같은 stacktrace를 확인할 수 있다.
    • Request
      • POST /twitter/_search?size=surprise_me&error_trace=true
    • Response
{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Failed to parse int parameter [size] with value [surprise_me]",
        "stack_trace": "Failed to parse int parameter [size] with value [surprise_me]]; nested: IllegalArgumentException..."
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Failed to parse int parameter [size] with value [surprise_me]",
    "stack_trace": "java.lang.IllegalArgumentException: Failed to parse int parameter [size] with value [surprise_me]\n    at org.elasticsearch.rest.RestRequest.paramAsInt(RestRequest.java:175)...",
    "caused_by": {
      "type": "number_format_exception",
      "reason": "For input string: \"surprise_me\"",
      "stack_trace": "java.lang.NumberFormatException: For input string: \"surprise_me\"\n    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)..."
    }
  },
  "status": 400
}
  • Request body in query string
    • POST request가 아닌데 request body가 있고, 이를 허용하지 않는 라이브러리의 경우에는 request body를 source query string으로 파라미터를 보내면 된다. 
    • 이때 반드시 source_content_type을 명시해 주기 (예를 들면 application/json)
  • Content-Type Requirements
    • request body 보낼 때 content-type header 명시해주기

 

 

엘라스틱 공식문서를 참고하여 짧은 영어 실력으로 번역하고 이해한 내용을 정리하였습니다.

초보 개발자이니 틀린 부분이 있다면 언제든지 얘기해주세요 ^^

(참고 : https://www.elastic.co/guide/en/elasticsearch/reference/6.5)

+ Recent posts