Tutorials
Writing ExaQL Queries: From Wireshark to AI
Nov 29, 2025

Writing ExaQL Queries: From Wireshark Filters to Natural Language
ExaQL is the single language that controls an entire ExaScale deployment—from 800 Gbps+ capture to 100 EB+ storage, indexing, security, and distributed processing.
Think of it as SQL + Wireshark + Kubernetes—but for packets.
If you've ever written a Wireshark display filter, you already know ExaQL's foundation. Every valid Wireshark filter is a valid ExaQL expression. But ExaQL goes much further: capture control, view creation, security policies, macro definitions, and orchestration across global federations.
Let's dive in.
Core Principles
ExaQL is built on five principles:
Principle | What It Means |
|---|---|
One Language | Capture, store, index, secure, query, export—all in ExaQL |
Wireshark Compatibility | Every display filter you know works verbatim |
Natural When Possible |
|
Powerful When Needed | Full aggregation, views, macros, orchestration |
Exascale Under the Hood | Automatic sharding, indexing, parallel execution |
The Basics: Wireshark Compatibility
ExaQL is 100% compatible with Wireshark display filter syntax. Every filter you know works exactly as expected.
Filter by protocol:
Filter by IP address:
Filter by port:
Combine with operators:
Use comparison operators:
If you've written these filters in Wireshark, they work identically in ExaQL. Copy and paste. No translation needed.
First-Class Citizens
ExaQL treats five data types as first-class citizens—you can query, filter, and export any of them:
Citizen | Keyword | What It Represents |
|---|---|---|
Packets |
| Raw frames |
Flows |
| 5-tuple sessions |
Streams |
| Reassembled TCP/QUIC/SCTP |
Application |
| Fully decoded L7 (e.g., |
Content |
| Payload search (raw or decoded) |
Query packets:
Query flows:
Query reassembled streams:
Query application-layer data:
The Show Command
show (or find) is your primary query command. It supports filtering, time ranges, sources, and output options.
Basic syntax:
Examples:
With options:
Time Ranges
Use during to specify time bounds—critical for performance at exascale.
Relative time:
Absolute time:
Always include time ranges when possible. A bounded query on petabytes is fast. An unbounded query is not.
Macros: Reusable Expressions
Macros let you define complex filters once and reuse them everywhere. This is where ExaQL becomes powerful for enterprise deployments.
Define a macro:
Use the macro:
Macros are stored in ExaScale and available across your entire deployment. Define them once, use them everywhere.
Capture Control
ExaQL controls live packet capture—start, stop, configure, and monitor.
Basic capture:
Filtered capture:
With options:
Enterprise capture with security:
Sharding Strategies
ExaScale automatically shards data for parallel processing. You can control the strategy with shard by:
Strategy | Syntax | Use Case |
|---|---|---|
Time |
| Time-series analysis |
Offset |
| Large sequential scans |
Index |
| Random access queries |
Flow |
| Session-based analysis |
Field |
| Group by specific field |
Fanout |
| Parallel processing |
Example:
Creating Projections and Views
Projections are virtual subsets of your capture data. Views add transformations.
Create a projection:
Create a lean view (99% size reduction):
Create a synthetic view from template:
Views don't copy data. They're computed on-demand. A 16MB template can project to 100+ exabytes.
Export with Security
Export data securely with format and security level controls.
Basic export:
With security:
Scheduled export:
Key Management
Attach decryption keys for TLS and IPsec traffic.
Attach a TLS key:
Query with decryption:
Keys are stored securely and access is controlled by security levels.
Security Levels
ExaScale implements 20 configurable security levels (0-20). ExaQL respects these automatically.
Encrypt data at a level:
Export with security:
Auto-escalate on sensitive data:
Users only see data at or below their clearance level. Queries automatically filter. Audit logs capture all access.
Metadata Queries
ExaQL exposes metadata through the meta. prefix:
System Commands
Manage your ExaScale deployment with system commands.
Indexing:
Security:
Monitoring:
Multi-Cluster Queries
Query across regions and clusters seamlessly.
Query specific clusters:
Query entire federation:
Data stays where it lives. Queries are distributed. Results are aggregated. You write one query—ExaScale handles the rest.
Common Query Patterns
Threat hunting: Find port scans
Fraud detection: Rapid automated requests
Performance: Slow transactions
Security: DNS exfiltration
Compliance: PII exposure
Natural Language (AI Prefix)
Prefix any query with AI: to use natural language:
The AI translates to ExaQL and executes. You can view the generated query to learn the syntax.
Performance Tips
Always use time bounds:
Use macros for complex filters:
Leverage indexes: ExaScale maintains SIX (sparse) and MSPIB (dense) indexes. Time, IP addresses, and ports are indexed by default.
Limit exploration queries:
Next Steps
ExaQL is the single language for your entire packet infrastructure. Start with Wireshark filters you know. Define macros for your environment. Build views for your analysts. Scale to global federation.
Same syntax from laptop to 3,900-node deployment.
Ready to try it? Request a demo and bring your toughest query. We'll show you how ExaScale handles it.
Mark Bednarczyk is the founder and CEO of Sly Technologies, with 30+ years of experience in network architecture and security.
