---
type: api
title: Run a search application search
description: **All methods and paths for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-search-application-search
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-search-application-search
products:
  - Elasticsearch
---

# Run a search application search


Availability: 8.8+

## Paths

- `POST` (also `GET`) `/_application/search_application/{name}/_search`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#bearerauth)

#### Path Parameters

- `name` (string Name)
  The name of the search application to be searched.

## Description

Generate and run an Elasticsearch query that uses the specified query parameteter and the search template associated with the search application or default template.
Unspecified template parameters are assigned their default values if applicable.

## Query String Parameters

- `typed_keys` (boolean · default: false)
  Determines whether aggregation names are prefixed by their respective types in the response.

## Request Body

`application/json`

- `params` (map string to object) — optional
  Query parameters specific to this request, which will override any defaults specified in the template.

## Response

`application/json`

- `took` (number)
  The number of milliseconds it took Elasticsearch to run the request.
This value is calculated by measuring the time elapsed between receipt of a request on the coordinating node and the time at which the coordinating node is ready to send the response.
It includes:

* Communication time between the coordinating node and data nodes
* Time the request spends in the search thread pool, queued for execution
* Actual run time

It does not include:

* Time needed to send the request to Elasticsearch
* Time needed to serialize the JSON response
* Time needed to send the response to a client
- `timed_out` (boolean)
  If `true`, the request timed out before completion; returned results may be partial or empty.
- `_shards` ({} ShardStatistics)
  A count of shards used for the request.
  - `failed` (number uint)
    The number of shards the operation or search attempted to run on but failed.
  - `successful` (number uint)
    The number of shards the operation or search succeeded on.
  - `total` (number uint)
    The number of shards the operation or search will run on overall.
  - `failures` ([] ShardFailure)
    - `index` (string IndexName)
    - `node` (string)
    - `reason` ({} ErrorCause)
      - `type` (string)
        The type of error
      - `reason` (union string) — nullable
        A human-readable explanation of the error, in English.
        One of: `string`
      - `stack_trace` (string)
        The server stack trace. Present only if the `error_trace=true` parameter was sent with the request.
      - `caused_by` ({} ErrorCause) — recursive
        Same fields as `reason` in `failures`
      - `root_cause` ([] ErrorCause) — recursive
        Same fields as `reason` in `failures`
      - `suppressed` ([] ErrorCause) — recursive
        Same fields as `reason` in `failures`
    - `shard` (number)
    - `status` (string)
    - `primary` (boolean)
  - `skipped` (number uint)
- `hits` ({} HitsMetadata)
  The returned documents and metadata.
  - `total` (union oneOf)
    Total hit count information, present only if `track_total_hits` wasn't `false` in the search request.
    - **TotalHits**
      - `relation` (enum TotalHitsRelation)
        

Supported values include:
  - `eq`: Accurate
  - `gte`: Lower bound, including returned events or sequences
        Values: `eq`, `gte`
      - `value` (number)
    - **number**
  - `hits` ([] Hit)
    - `_index` (string IndexName)
    - `_id` (string Id)
    - `_score` (union number | string) — nullable
    - `_explanation` ({} Explanation)
      - `description` (string)
      - `details` ([] ExplanationDetail)
        - `description` (string)
        - `details` ([] ExplanationDetail) — recursive
          Same fields as `details` in `_explanation`
        - `value` (number)
      - `value` (number)
    - `fields` (map string to object)
    - `highlight` (map string to string)
    - `inner_hits` (map string to InnerHitsResult)
      Map values ({} InnerHitsResult)
      - `hits` ({} HitsMetadata) — recursive
        Same fields as `hits`
    - `matched_queries` (union oneOf)
      One of: `string[]` or `string to number`
    - `_nested` ({} NestedIdentity)
      - `field` (string Field)
      - `offset` (number)
      - `_nested` ({} NestedIdentity) — recursive
        Same fields as `_nested` in `hits`
    - `_ignored` ([] string)
    - `ignored_field_values` (map string to FieldValue)
    - `_shard` (string)
    - `_node` (string)
    - `_routing` (string)
    - `_source` (object)
    - `_rank` (number)
    - `_seq_no` (number SequenceNumber)
    - `_primary_term` (number)
    - `_version` (number VersionNumber)
    - `sort` (SortResults)
  - `max_score` (union number | string) — nullable
- `aggregations` (map string to {} Aggregate)
  See [Aggregate](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-aggregations-aggregate)
- `_clusters` ({} ClusterStatistics)
  - `skipped` (number)
  - `successful` (number)
  - `total` (number)
  - `running` (number)
  - `partial` (number)
  - `failed` (number)
  - `details` (map string to ClusterDetails)
    Map values ({} ClusterDetails)
    - `status` (enum ClusterSearchStatus)
      Values: `running`, `successful`, `partial`, `skipped`, `failed`
    - `indices` (string)
    - `took` (DurationValueUnitMillis)
    - `timed_out` (boolean)
    - `_shards` ({} ShardStatistics)
      Same fields as `_shards`
    - `failures` ([] ShardFailure)
      Same fields as `failures` in `_shards`
- `fields` (map string to object)
- `max_score` (number)
- `num_reduce_phases` (number)
- `profile` ({} Profile)
  - `shards` ([] ShardProfile)
    - `aggregations` ([] AggregationProfile)
      - `breakdown` ({} AggregationBreakdown)
        - `build_aggregation` (number)
        - `build_aggregation_count` (number)
        - `build_leaf_collector` (number)
        - `build_leaf_collector_count` (number)
        - `collect` (number)
        - `collect_count` (number)
        - `initialize` (number)
        - `initialize_count` (number)
        - `post_collection` (number)
        - `post_collection_count` (number)
        - `reduce` (number)
        - `reduce_count` (number)
      - `description` (string)
      - `time_in_nanos` (DurationValueUnitNanos)
      - `type` (string)
      - `debug` ({} AggregationProfileDebug)
        - `segments_with_multi_valued_ords` (number)
        - `collection_strategy` (string)
        - `segments_with_single_valued_ords` (number)
        - `total_buckets` (number)
        - `built_buckets` (number)
        - `result_strategy` (string)
        - `has_filter` (boolean)
        - `delegate` (string)
        - `delegate_debug` ({} AggregationProfileDebug) — recursive
          Same fields as `debug` in `aggregations`
        - `chars_fetched` (number)
        - `extract_count` (number)
        - `extract_ns` (number)
        - `values_fetched` (number)
        - `collect_analyzed_ns` (number)
        - `collect_analyzed_count` (number)
        - `surviving_buckets` (number)
        - `ordinals_collectors_used` (number)
        - `ordinals_collectors_overhead_too_high` (number)
        - `string_hashing_collectors_used` (number)
        - `numeric_collectors_used` (number)
        - `empty_collectors_used` (number)
        - `deferred_aggregators` ([] string)
        - `segments_with_doc_count_field` (number)
        - `segments_with_deleted_docs` (number)
        - `filters` ([] AggregationProfileDelegateDebugFilter)
          - `results_from_metadata` (number)
          - `query` (string)
          - `specialized_for` (string)
          - `segments_counted_in_constant_time` (number)
        - `segments_counted` (number)
        - `segments_collected` (number)
        - `map_reducer` (string)
        - `brute_force_used` (number)
        - `dynamic_pruning_attempted` (number)
        - `dynamic_pruning_used` (number)
        - `skipped_due_to_no_data` (number)
      - `children` ([] AggregationProfile) — recursive
        Same fields as `aggregations` in `shards`
    - `cluster` (string)
    - `dfs` ({} DfsProfile)
      - `statistics` ({} DfsStatisticsProfile)
        - `type` (string)
        - `description` (string)
        - `time` (string Duration)
        - `time_in_nanos` (DurationValueUnitNanos)
        - `breakdown` ({} DfsStatisticsBreakdown)
          - `collection_statistics` (number)
          - `collection_statistics_count` (number)
          - `create_weight` (number)
          - `create_weight_count` (number)
          - `rewrite` (number)
          - `rewrite_count` (number)
          - `term_statistics` (number)
          - `term_statistics_count` (number)
        - `debug` (map string to object)
        - `children` ([] DfsStatisticsProfile) — recursive
          Same fields as `statistics` in `dfs`
      - `knn` ([] DfsKnnProfile)
        - `vector_operations_count` (number)
        - `query` ([] KnnQueryProfileResult)
          - `type` (string)
          - `description` (string)
          - `time` (string Duration)
          - `time_in_nanos` (DurationValueUnitNanos)
          - `breakdown` ({} KnnQueryProfileBreakdown)
            - `advance` (number)
            - `advance_count` (number)
            - `build_scorer` (number)
            - `build_scorer_count` (number)
            - `compute_max_score` (number)
            - `compute_max_score_count` (number)
            - `count_weight` (number)
            - `count_weight_count` (number)
            - `create_weight` (number)
            - `create_weight_count` (number)
            - `match` (number)
            - `match_count` (number)
            - `next_doc` (number)
            - `next_doc_count` (number)
            - `score` (number)
            - `score_count` (number)
            - `set_min_competitive_score` (number)
            - `set_min_competitive_score_count` (number)
            - `shallow_advance` (number)
            - `shallow_advance_count` (number)
          - `debug` (map string to object)
          - `children` ([] KnnQueryProfileResult) — recursive
            Same fields as `query` in `knn`
        - `rewrite_time` (number)
        - `collector` ([] KnnCollectorResult)
          - `name` (string)
          - `reason` (string)
          - `time` (string Duration)
          - `time_in_nanos` (DurationValueUnitNanos)
          - `children` ([] KnnCollectorResult) — recursive
            Same fields as `collector` in `knn`
    - `fetch` ({} FetchProfile)
      - `type` (string)
      - `description` (string)
      - `time_in_nanos` (DurationValueUnitNanos)
      - `breakdown` ({} FetchProfileBreakdown)
        - `load_source` (number)
        - `load_source_count` (number)
        - `load_stored_fields` (number)
        - `load_stored_fields_count` (number)
        - `next_reader` (number)
        - `next_reader_count` (number)
        - `process_count` (number)
        - `process` (number)
      - `debug` ({} FetchProfileDebug)
        - `stored_fields` ([] string)
        - `fast_path` (number)
      - `children` ([] FetchProfile) — recursive
        Same fields as `fetch` in `shards`
    - `id` (string)
    - `index` (string IndexName)
    - `node_id` (string)
    - `searches` ([] SearchProfile)
      - `collector` ([] Collector)
        - `name` (string)
        - `reason` (string)
        - `time_in_nanos` (DurationValueUnitNanos)
        - `children` ([] Collector) — recursive
          Same fields as `collector` in `searches`
      - `query` ([] QueryProfile)
        - `breakdown` ({} QueryBreakdown)
          - `advance` (number)
          - `advance_count` (number)
          - `build_scorer` (number)
          - `build_scorer_count` (number)
          - `create_weight` (number)
          - `create_weight_count` (number)
          - `match` (number)
          - `match_count` (number)
          - `shallow_advance` (number)
          - `shallow_advance_count` (number)
          - `next_doc` (number)
          - `next_doc_count` (number)
          - `score` (number)
          - `score_count` (number)
          - `compute_max_score` (number)
          - `compute_max_score_count` (number)
          - `count_weight` (number)
          - `count_weight_count` (number)
          - `set_min_competitive_score` (number)
          - `set_min_competitive_score_count` (number)
        - `description` (string)
        - `time_in_nanos` (DurationValueUnitNanos)
        - `type` (string)
        - `children` ([] QueryProfile) — recursive
          Same fields as `query` in `searches`
      - `rewrite_time` (number)
    - `shard_id` (number)
- `pit_id` (string Id)
- `_scroll_id` (string ScrollId)
  The identifier for the search and its search context.
You can use this scroll ID with the scroll API to retrieve the next batch of search results for the request.
This property is returned only if the `scroll` query parameter is specified in the request.
- `suggest` (map string to Suggest)
- `terminated_early` (boolean)
## Code Examples

#### Console

```console
POST _application/search_application/my-app/_search
{
  "params": {
    "query_string": "my first query",
    "text_fields": [
      {"name": "title", "boost": 5},
      {"name": "description", "boost": 1}
    ]
  }
}
```

#### JavaScript

```javascript
const response = await client.searchApplication.search({
  name: "my-app",
  params: {
    query_string: "my first query",
    text_fields: [
      {
        name: "title",
        boost: 5,
      },
      {
        name: "description",
        boost: 1,
      },
    ],
  },
});
```

#### Python

```python
resp = client.search_application.search(
    name="my-app",
    params={
        "query_string": "my first query",
        "text_fields": [
            {
                "name": "title",
                "boost": 5
            },
            {
                "name": "description",
                "boost": 1
            }
        ]
    },
)
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/_application/search_application/my-app/_search" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "params": {
      "query_string": "my first query",
      "text_fields": [
        {
          "name": "title",
          "boost": 5
        },
        {
          "name": "description",
          "boost": 1
        }
      ]
    }
  }'
```

#### Java

```java
client.searchApplication().search(s -> s
    .name("my-app")
    .params(Map.of("text_fields", JsonData.fromJson("[{\"name\":\"title\",\"boost\":5},{\"name\":\"description\",\"boost\":1}]"),"query_string", JsonData.fromJson("\"my first query\"")))
);
```

#### C#

```c#
var response = await client.SearchApplication
    .SearchAsync<MyDocument>(name: "my-app", d1 => d1
        .Params(new Dictionary<string, object>()
        {
            { "query_string", "my first query" },
            { "text_fields", JsonSerializer.Deserialize<JsonElement>("""
            [
              {
                "name": "title",
                "boost": 5
              },
              {
                "name": "description",
                "boost": 1
              }
            ]
            """) }
        })
    );
```

#### PHP

```php
$resp = $client->searchApplication()->search([
    "name" => "my-app",
    "body" => [
        "params" => [
            "query_string" => "my first query",
            "text_fields" => array(
                [
                    "name" => "title",
                    "boost" => 5,
                ],
                [
                    "name" => "description",
                    "boost" => 1,
                ],
            ),
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.search_application.search(
  name: "my-app",
  body: {
    "params": {
      "query_string": "my first query",
      "text_fields": [
        {
          "name": "title",
          "boost": 5
        },
        {
          "name": "description",
          "boost": 1
        }
      ]
    }
  }
)
```

