Search Queries in Arkime and OpenSearch Dashboards

July 20, 2026 ยท View on GitHub

OpenSearch Dashboards supports two query syntaxes: the legacy Lucene syntax and Dashboards Query Language (DQL), both of which are somewhat different than Arkime's query syntax. The Arkime interface is for searching and visualizing Arkime sessions, Zeek logs, and Suricata alerts. The prebuilt dashboards in the OpenSearch Dashboards interface are for searching and visualizing Zeek logs and Suricata alerts, but will not include Arkime sessions.

Query Syntax Comparison

Here are some common patterns used in building search query strings for Arkime and OpenSearch Dashboards, respectively. See the links provided for further documentation.

Arkime Search StringOpenSearch Dashboards Search String (Lucene)OpenSearch Dashboards Search String (DQL)
Field existsevent.dataset == EXISTS!_exists_:event.datasetevent.dataset:*
Field does not existevent.dataset != EXISTS!NOT _exists_:event.datasetNOT event.dataset:*
Field matches a valueport.dst == 22destination.port:22destination.port:22
Field does not match a valueport.dst != 22NOT destination.port:22NOT destination.port:22
Field matches at least one of a list of valuestags == [foo, bar]tags:(foo OR bar)tags:(foo or bar)
Field range (inclusive)http.statuscode >= 200 && http.statuscode <= 300http.statuscode:[200 TO 300]http.statuscode >= 200 and http.statuscode <= 300
Field range (exclusive)http.statuscode > 200 && http.statuscode < 300http.statuscode:{200 TO 300}http.statuscode > 200 and http.statuscode < 300
Field range (mixed exclusivity)http.statuscode >= 200 && http.statuscode < 300http.statuscode:[200 TO 300}http.statuscode >= 200 and http.statuscode < 300
Match all search terms (AND)(tags == [foo, bar]) && (http.statuscode == 401)tags:(foo OR bar) AND http.statuscode:401tags:(foo or bar) and http.statuscode:401
Match any search terms (OR)`(zeek.ftp.password == EXISTS!)(zeek.http.password == EXISTS!)
Global string search (anywhere in the document)all Arkime search expressions are field-basedmicrosoftmicrosoft
Wildcardshost.dns == "*micro?oft*" (? for single character, * for any characters)dns.host:*micro?oft* (? for single character, * for any characters)dns.host:*micro*ft* (* for any characters)
Regexhost.http == /.*www\.f.*k\.com.*/zeek.http.host:/.*www\.f.*k\.com.*/DQL does not support regex
IPv4 valuesip == 0.0.0.0/0source.ip:"0.0.0.0/0" OR destination.ip:"0.0.0.0/0"source.ip:"0.0.0.0/0" OR destination.ip:"0.0.0.0/0"
IPv6 values`(ip.src == EXISTS!ip.dst == EXISTS!) && (ip != 0.0.0.0/0)`
GeoIP information availablecountry == EXISTS!_exists_:destination.geo OR _exists_:source.geodestination.geo:* or source.geo:*
Zeek log typeevent.dataset == noticeevent.dataset:noticeevent.dataset:notice
IP CIDR Subnetsip.src == 172.16.0.0/12source.ip:"172.16.0.0/12"source.ip:"172.16.0.0/12"
Search time frameUse Arkime time bounding controls under the search barUse OpenSearch Dashboards time range controls in the upper right-hand cornerUse OpenSearch Dashboards time range controls in the upper right-hand corner

When building complex queries, users are strongly recommended to enclose search terms and expressions in parentheses to control order of operations.

As Zeek logs are ingested, Malcolm parses and normalizes the logs' fields to match Arkime's underlying OpenSearch schema. A complete list of these fields can be found in the Arkime help (accessible at https://localhost/arkime/help#fields if connecting locally).

Whenever possible, Zeek fields are mapped to existing corresponding Arkime fields: for example, the orig_h field in Zeek is mapped to Arkime's source.ip field. The original Zeek fields are also left intact. To complicate the issue, the Arkime interface uses its own aliases to reference those fields: the source IP field is referenced as ip.src (Arkime's alias) in Arkime and source.ip or source.ip in OpenSearch Dashboards.

The table below shows the mapping of some of these fields.

Field DescriptionArkime Field Alias(es)Arkime-mapped Zeek Field(s)Zeek Field(s)
Community ID Flow Hashnetwork.community_idnetwork.community_id
Destination IPip.dstdestination.ipdestination.ip
Destination MACmac.dstdestination.macdestination.mac
Destination Portport.dstdestination.portdestination.port
Durationsession.lengthlengthzeek.conn.duration
First Packet TimestarttimefirstPacketzeek.ts, @timestamp
IP Protocolip.protocolipProtocolnetwork.transport
Last Packet TimestoptimelastPacket
MIME Typeemail.bodymagic, http.bodymagichttp.bodyMagicfile.mime_type, zeek.files.mime_type, zeek.ftp.mime_type, zeek.http.orig_mime_types, zeek.http.resp_mime_types, zeek.irc.dcc_mime_type
Protocol/Serviceprotocolsprotocolnetwork.transport, network.protocol
Request Bytesdatabytes.src, bytes.srcsource.bytes, client.byteszeek.conn.orig_bytes, zeek.conn.orig_ip_bytes
Request Packetspackets.srcsource.packetszeek.conn.orig_pkts
Response Bytesdatabytes.dst, bytes.dstdestination.bytes, server.byteszeek.conn.resp_bytes, zeek.conn.resp_ip_bytes
Response Packetspackets.dstdestination.packetszeek.con.resp_pkts
Source IPip.srcsource.ipsource.ip
Source MACmac.srcsource.macsource.mac
Source Portport.srcsource.portsource.port
Total Bytesdatabytes, bytestotDataBytes, network.bytes
Total Packetspacketsnetwork.packets
Usernameuseruserrelated.user
Zeek Connection UIDzeek.uid, event.id
Zeek File UIDzeek.fuid, event.id
Zeek Log Typeevent.dataset

In addition to the fields listed above, Arkime provides several special field aliases for matching any field of a particular type. While these aliases do not exist in OpenSearch Dashboards per se, they can be approximated as illustrated below.

Matches AnyArkime Special Field ExampleOpenSearch Dashboards/Zeek Equivalent Example
IP Addressip == 192.168.0.1source.ip:192.168.0.1 OR destination.ip:192.168.0.1
Portport == [80, 443, 8080, 8443]source.port:(80 OR 443 OR 8080 OR 8443) OR destination.port:(80 OR 443 OR 8080 OR 8443)
Country (code)country == [RU,CN]destination.geo.country_code2:(RU OR CN) OR source.geo.country_code2:(RU OR CN) OR dns.GEO:(RU OR CN)
Country (name)destination.geo.country_name:(Russia OR China) OR source.geo.country_name:(Russia OR China)
ASNasn == "*Mozilla*"source.as.full:*Mozilla* OR destination.as.full:*Mozilla* OR dns.ASN:*Mozilla*
Hosthost == www.microsoft.comzeek.http.host:www.microsoft.com (or zeek.dhcp.host_name, zeek.dns.host, zeek.ntlm.host, smb.host, etc.)
Protocol (layers >= 4)protocols == tlsprotocol:tls
Useruser == EXISTS! && user != anonymous_exists_:user AND (NOT user:anonymous)

For details on how to filter both Zeek logs and Arkime session records for a particular connection, see Correlating Zeek logs and Arkime sessions.

Arkime Query Syntax

A more in-depth guide to Arkime query syntax can be found in the Arkime help at https://localhost/arkime/help#search if connecting locally. Users may also peruse the source code used to generate that help page.

OpenSearch Dashboards Query Syntax

Dashboards Query Language (DQL) and query string language (Lucene) are the two search bar language options in OpenSeach Dashboards. For a comparison between these two query languages, see the DQL and query string query quick reference in the OpenSearch documentation.

Dashboards Query Language (DQL)

DQL is the syntax OpenSearch Dashboards uses by default. See the Dashboards Query Language (DQL) page in the OpenSearch documentation for a discussion on the features of this language, or the source code from which that documentation is generated.

Apache Lucene Query Parser Syntax

OpenSearch Dashboards uses Apache Lucene query syntax to perform query_string queries, which "provides for creating powerful yet concise queries that can incorporate wildcards and search multiple fields."

For a full treatment of query string (Lucene) syntax, please refer to the following documents. The source code from which these documents are generated are also included for reference.

SQL and PPL

OpenSearch provides two powerful query languages that offer alternatives to DQL and Lucene: Structured Query Language (SQL) and Piped Processing Language (PPL).

The OpenSearch Dashboards Query Workbench tool can be used to run on-demand SQL and PPL queries.