ClickStack와 Elastic에서 검색하기
argMax, histogram, quantileTiming과 같은 관측성 중심 함수를 폭넓게 제공하여 구조화된 로그, 메트릭, 트레이스에 대한 쿼리를 단순화합니다.
간단한 로그 및 트레이스 탐색을 위해 ClickStack UI(HyperDX)는 필드-값 쿼리, 범위, 와일드카드 등에 대해 직관적인 텍스트 기반 필터링을 지원하는 Lucene 스타일 구문을 제공합니다. 이는 Elasticsearch의 Lucene 구문 및 Kibana Query Language의 일부 요소와 유사합니다.
검색 인터페이스는 이러한 익숙한 구문을 지원하면서도, 내부적으로는 이를 효율적인 SQL WHERE 절로 변환합니다. 따라서 Kibana 사용자에게 익숙한 사용 경험을 제공하는 동시에, 필요할 때 SQL의 강력한 기능도 활용할 수 있습니다. 이를 통해 ClickHouse의 string search functions, similarity functions, date time functions를 폭넓게 활용할 수 있습니다.
아래에서는 ClickStack와 Elasticsearch의 Lucene 쿼리 언어를 비교합니다.
ClickStack 검색 구문 vs Elasticsearch 쿼리 문자열
존재/누락 차이
Nullable필드는NULL로 설정됩니다.- 널 비허용 필드(기본값)는 기본값으로 채워집니다(대개 빈 문자열, 0 또는 이에 상응하는 값).
Nullable이 권장되지 않으므로 후자의 방식을 사용합니다.
즉, Elasticsearch에서와 같은 의미로 필드가 “존재하는지”를 직접 확인하는 것은 지원되지 않습니다.
대신 비어 있지 않은 값이 있는지 확인하려면 field:* 또는 field != ''를 사용할 수 있습니다. 따라서 실제로 누락된 필드와 명시적으로 빈 필드를 구분할 수는 없습니다.
실제로 이러한 차이로 인해 관측성 사용 사례에서 문제가 발생하는 경우는 드물지만, 시스템 간에 쿼리를 옮길 때는 이 점을 염두에 두어야 합니다.