The general form of search string is a list of terms separated with space:
QUERY = TERM TERM ...
Each term can be either a plain keyword, or a predict in the form of
PRED:EXP, where PRED is the predefined filter and EXP is the parameters to be
applied to the filter. As a simple example:
bugfix from:Bob to:George age:>1w
to search emails titled as 'bugfix' (a subject keyword filter) from Bob (a sender filter) to George (a recipient filter) before 1 week ago (an age filter).
bugfix from:Bob is:reviewed not:obsoleted
to search all emails from Bob that have "bugfix" in subject, and have been reviewed but is not obsoleted (by a new revision of this series). Because there are syntax shortcut for some predicts, it can be simplified as:
from:Bob fix +reviewed -tested
Filter by age of the message. Supports "d" (day), "w" (week), "m" (month) and "y" (year) as units. Examples:
"not:X" is the opposite of "is:X". "+X" and "-X" are shorter synonyms of "is:X" and "not:X" respectively.
Compare the address info of message. Example:
NAME can be the name, email or a substring of MAINTAINERS file entries of the maintainer.
where NAME can be e.g. "git", "testing", "testing.TEST-NAME"
USERNAME can be "me" to identify the current user
Negative of an expression. Example:
!is:reviewed (query series that are not reviewed) !has:replies (query series that have not received any comment)
Exact match of message-id. Example:
The two prefixes are equivalent.
Search text keyword in the email message. Example:
Alternatives can be written within braces. The query will match if at least one of the terms matches.
AND is usually obtained just by writing terms next to each other, except inside braces. For this reason you can also explicitly write an "AND" using parentheses.