elips/docs
Reference

EQL

EQL is a small expression-oriented query language with a lexer, recursive-descent parser, AST, and executor. It produces the same Filter and QueryPlan objects the SDK builders produce.

Shape

python
client.query_eql(
    "search in docs nearest $q k 10 where year >= 2023 yield",
    {"q": query_vector},
)
bash
elips query /my_db --eql 'search in docs nearest [0.1,0.2,0.3] k 5 yield'
eql
search in <collection>
    nearest <[literal] | $binding>
    [k <int>]
    [threshold <number>]
    [where <filter>]
    [rank_by <distance | field>]
    [project <* | field, field, ...>]
    yield
  • k defaults to 10 — unbounded when a threshold range is supplied. top is still accepted as a deprecated alias for k.
  • rank_by <field> re-sorts results by a metadata field; default is distance.
  • project trims the returned payload.

get — by id

eql
get from <collection> id "<uuid>" yield

scan — iterate

eql
scan in <collection> [where <filter>] [offset <int>] [limit <int>] yield

add / delete

eql
add in <collection> vector [0.1, 0.2, ...] [metadata { "key": value, ... }]
delete from <collection> id "<uuid>"

The verbs are lowercase and case-sensitive. The pre-1.1 spellings seek/fetch/place/erase remain accepted as deprecated synonyms.

Filters

eql
filter     := term (("and" | "or") term)* | "not" filter | "(" filter ")"
term       := field <comparator> value
            | field "in" [ value, value, ... ]
            | field "contains" "substring"
comparator := = | != | < | <= | > | >=
value      := "string" | number | true | false

Numbers without a decimal point are integers. contains is a substring match on string fields. Comments start with # and run to end of line.

Examples

eql
# filtered search with projection
search in articles
    nearest $embedding
    k 10
    where category = "technology" and published_year >= 2023
    project title, author
    yield

# range search
search in faces nearest $probe threshold 0.15 where verified = true yield

# membership scan
scan in users where country in ["US", "GB", "CA"] limit 100 yield