Skip to main content

Parameters and Rules

General Rules

Parameter binding and conditional expansion run before the command reaches Elasticsearch. They do not require SQL syntax. In JdbcTemplate, method annotations, or Mapper files, write a native command and bind its values; see Parameter Passing.

For example, this native command binds values instead of concatenating user input:

GET /user_info/_count {"query":{"bool":{"filter":[{"term":{"id":#{id}}},{"term":{"name":#{name}}}]}}}

The @{if, condition, command fragment} rule can select a command or fragment. Only the selected branch binds parameters; the resulting command must be valid Elasticsearch syntax.

SQL Fragment Rules

AND, OR, SET, and IN rules generate SQL fragments; they do not translate them into Elasticsearch commands. In particular, @{in} produces a parenthesized, comma-separated list of placeholders, not a native collection parameter.

Use native command syntax with bound values, and use general conditional rules to select fragments. This is a restriction on the generated syntax, not a lack of parameter binding or rule expansion.