[role="xpack"]
[[query-dsl-rule-query]]
=== Rule query
++++
Rule
++++
preview::[]
Applies <> to the query before returning results.
This feature is used to promote documents in the manner of a <> based on matching defined rules.
If no matching query rules are defined, the "organic" matches for the query are returned.
[NOTE]
====
To use the rule query, you first need a defined set of query rules.
Use the <> to create and manage query rules.
For more information and examples see <>.
====
==== Example request
////
[source,console]
--------------------------------------------------
PUT _query_rules/my-ruleset
{
"rules": [
{
"rule_id": "my-rule1",
"type": "pinned",
"criteria": [
{
"type": "exact",
"metadata": "user_query",
"values": ["puggles"]
}
],
"actions": {
"ids": [ "id1" ]
}
}
]
}
--------------------------------------------------
// TESTSETUP
[source,console]
--------------------------------------------------
DELETE _query_rules/my-ruleset
--------------------------------------------------
// TEARDOWN
////
[source,console]
--------------------------------------------------
GET /_search
{
"query": {
"rule_query": {
"match_criteria": {
"user_query": "pugs"
},
"ruleset_id": "my-ruleset",
"organic": {
"match": {
"description": "puggles"
}
}
}
}
}
--------------------------------------------------
[[rule-query-top-level-parameters]]
==== Top-level parameters for `rule_query`
`ruleset_id`::
(Required, string) A unique <> ID with query-based rules to match and apply as applicable.
`match_criteria`::
(Required, object) Defines the match criteria to apply to rules in the given query ruleset.
Match criteria should match the keys defined in the `criteria.metadata` field of the rule.
`organic`::
(Required, object) Any choice of <> used to return results, that may be modified by matching query rules.
If no query rules are matched and applied, this query will be executed with no modification.