mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 17:34:17 -04:00
* Allow typed_keys for search application Search API * Update docs/changelog/108007.yaml * Use RestSearchAction.TYPED_KEYS_PARAM
187 lines
4.4 KiB
Text
187 lines
4.4 KiB
Text
[role="xpack"]
|
|
[[search-application-search]]
|
|
=== Search Application Search
|
|
|
|
beta::[]
|
|
|
|
++++
|
|
<titleabbrev>Search Application Search</titleabbrev>
|
|
++++
|
|
|
|
Given specified query parameters, generates and executes an {es} query using the search template associated
|
|
with the search application or a default template if none is specified.
|
|
Unspecified template parameters will be assigned their default values (if applicable).
|
|
|
|
[[search-application-search-request]]
|
|
==== {api-request-title}
|
|
|
|
`POST _application/search_application/<name>/_search`
|
|
|
|
[[search-application-search-prereqs]]
|
|
==== {api-prereq-title}
|
|
|
|
Requires read privileges on the backing alias of the search application.
|
|
|
|
[[search-application-search-path-params]]
|
|
==== {api-path-parms-title}
|
|
|
|
`typed_keys`::
|
|
(Optional, Boolean) If `true`, aggregation and suggester names are prefixed
|
|
by their respective types in the response. Defaults to `false`.
|
|
|
|
[[search-application-search-request-body]]
|
|
==== {api-request-body-title}
|
|
|
|
`params`::
|
|
(Optional, map of strings to objects)
|
|
Query parameters used to generate the {es} query from the search template associated with the search application.
|
|
If a parameter used in the search template is not specified in `params`, the parameter's default value will be used.
|
|
|
|
[NOTE]
|
|
====
|
|
The search application can be configured to validate search template parameters.
|
|
See the `dictionary` parameter in the <<put-search-application-dictionary-param, put search application>> API for more
|
|
information.
|
|
====
|
|
|
|
[[search-application-search-response-codes]]
|
|
==== {api-response-codes-title}
|
|
|
|
`400`::
|
|
Invalid parameter passed to search template.
|
|
Examples include:
|
|
|
|
- Missing required parameter
|
|
- Invalid parameter data type
|
|
- Invalid parameter value
|
|
|
|
`404`::
|
|
Search Application `<name>` does not exist.
|
|
|
|
[[search-application-search-example]]
|
|
==== {api-examples-title}
|
|
|
|
The following example executes a search against a search application called `my-app` that uses the search template from
|
|
the <<search-application-api-bm25-template, text search example>>:
|
|
|
|
////
|
|
[source,console]
|
|
----
|
|
PUT /index1
|
|
|
|
PUT /index1/_doc/1?refresh=true
|
|
{
|
|
"title": "Sample document",
|
|
"description": "A sample document that matches my first query"
|
|
}
|
|
|
|
PUT _application/search_application/my-app
|
|
{
|
|
"indices": ["index1"],
|
|
"template": {
|
|
"script": {
|
|
"lang": "mustache",
|
|
"source": """
|
|
{
|
|
"query": {
|
|
"multi_match": {
|
|
"query": "{{query_string}}",
|
|
"fields": [{{#text_fields}}"{{name}}^{{boost}}",{{/text_fields}}]
|
|
}
|
|
},
|
|
"explain": "{{explain}}",
|
|
"from": "{{from}}",
|
|
"size": "{{size}}"
|
|
}
|
|
""",
|
|
"params": {
|
|
"query_string": "*",
|
|
"text_fields": [
|
|
{"name": "title", "boost": 10},
|
|
{"name": "description", "boost": 5}
|
|
],
|
|
"explain": false,
|
|
"from": 0,
|
|
"size": 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
----
|
|
// TESTSETUP
|
|
//////////////////////////
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
DELETE _application/search_application/my-app
|
|
|
|
DELETE /index1
|
|
--------------------------------------------------
|
|
// TEARDOWN
|
|
|
|
////
|
|
|
|
[source,console]
|
|
----
|
|
POST _application/search_application/my-app/_search
|
|
{
|
|
"params": {
|
|
"query_string": "my first query",
|
|
"text_fields": [
|
|
{"name": "title", "boost": 5},
|
|
{"name": "description", "boost": 1}
|
|
]
|
|
}
|
|
}
|
|
----
|
|
|
|
The generated {es} query would look like:
|
|
|
|
[source,console-result]
|
|
----
|
|
{
|
|
"from": 0,
|
|
"size": 10,
|
|
"query": {
|
|
"multi_match": {
|
|
"query": "my first query",
|
|
"fields": [
|
|
"description^1.0",
|
|
"title^5.0"
|
|
]
|
|
}
|
|
},
|
|
"explain": false
|
|
}
|
|
----
|
|
// TESTRESPONSE[skip:result of request not run in this document]
|
|
|
|
In this case, the `from`, `size`, and `explain` parameters are not specified in the request, so the default values
|
|
specified in the search template are used.
|
|
|
|
The expected response is the search results from the {es} query that was generated & executed.
|
|
The response format is the same as that used by the <<search-api-response-body,{es} Search API>>:
|
|
|
|
[source,console-result]
|
|
----
|
|
{
|
|
"took": 5,
|
|
"timed_out": false,
|
|
"_shards": {
|
|
"total": 1,
|
|
"successful": 1,
|
|
"skipped": 0,
|
|
"failed": 0
|
|
},
|
|
"hits": {
|
|
"total": {
|
|
"value": 1,
|
|
"relation": "eq"
|
|
},
|
|
"max_score": 0.8630463,
|
|
"hits": ...
|
|
}
|
|
}
|
|
----
|
|
// TESTRESPONSE[s/"took": 5/"took": $body.$_path/]
|
|
// TESTRESPONSE[s/"hits": \.\.\./"hits": $body.$_path/]
|