Skip to content

[DOCS] Rewrite prefix query docs #41955

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jul 29, 2019
51 changes: 29 additions & 22 deletions docs/reference/query-dsl/prefix-query.asciidoc
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
[[query-dsl-prefix-query]]
=== Prefix Query
Returns documents that contain a specific prefix in a provided field.

Matches documents that have fields containing terms with a specified
prefix (*not analyzed*). The prefix query maps to Lucene `PrefixQuery`.
The following matches documents where the user field contains a term
that starts with `ki`:
[[prefix-query-ex-request]]
==== Example request

The following search returns documents where the `user` field contains a term
that begins with `ki`.

[source,js]
--------------------------------------------------
----
GET /_search
{ "query": {
"prefix" : { "user" : "ki" }
}
{
"query": {
"prefix": {
"user": {
"value": "ki",
"rewrite": "constant_score"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if this parameter should be included in the "default" example since IMHO its pretty much an advanced parameter and mentioned later (also, constant_score should be the default, so not necessary here).
Did you consider also documenting the previous "short" form or do we want to discourage ppl. from using it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great question!

I've been using the longer form requests because it's easier to delineate additional parameters. This is less of an issue with the prefix query, but I used the longer form so it's consistent with other queries. However, I'm open to changing this if wanted.

I've removed the rewrite parameter and added a "short request example" with 1e6ca49 and d58de59.

}
}
}
}
--------------------------------------------------
----
// CONSOLE

A boost can also be associated with the query:
[[prefix-query-top-level-params]]
==== Top-level parameters for `term`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be "prefix" instead of "term"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Copy/paste error. Fixed with 1e6ca49.

`<field>` (Required)::
(string) Field you wish to search.

[source,js]
--------------------------------------------------
GET /_search
{ "query": {
"prefix" : { "user" : { "value" : "ki", "boost" : 2.0 } }
}
}
--------------------------------------------------
// CONSOLE
[[prefix-query-field-params]]
==== Parameters for `<field>`
`value` (Required)::
(string) Beginning characters of terms you wish to find in the provided
`<field>`.

This multi term query allows you to control how it gets rewritten using the
<<query-dsl-multi-term-rewrite,rewrite>>
parameter.
`rewrite` (Optional)::
(string) Method used to rewrite the query. For valid values and more
information, see the <<query-dsl-multi-term-rewrite, `rewrite` parameter>>.