Elastic Stack · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Elk Stack Search API

56 actions 56 updates phrasing extends openapi/elk-stack-search-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Elastic Stack's API. It is a proposal applied on top of the contract, not a document Elastic Stack publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 56 · first 16 shown; the file carries all of them

$.info
$.paths['/_async_search/{id}'].get
$.paths['/_async_search/{id}'].delete
$.paths['/_async_search/status/{id}'].get
$.paths['/_async_search'].post
$.paths['/{index}/_async_search'].post
$.paths['/_search/scroll'].get
$.paths['/_search/scroll'].post
$.paths['/_search/scroll'].delete
$.paths['/_search/scroll/{scroll_id}'].get
$.paths['/_search/scroll/{scroll_id}'].post
$.paths['/_search/scroll/{scroll_id}'].delete
$.paths['/_pit'].delete
$.paths['/_count'].get
$.paths['/_count'].post
$.paths['/{index}/_count'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Elk Stack Search API
  version: 1.0.0
extends: openapi/elk-stack-search-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 55
- target: $.paths['/_async_search/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the results of an async search
      effect: read
      questions:
      - How do I retrieve the hits from an async search I submitted earlier?
      - Can I wait a few seconds for an async search to finish before its results come back?
      instructions:
      - text: Get the results of async search {id}.
        slots:
          id: path.id
      - text: Fetch async search {id} results, waiting up to {wait_for_completion_timeout} for completion.
        slots:
          id: path.id
          wait_for_completion_timeout: query.wait_for_completion_timeout
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_async_search/{id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Cancel or delete an async search
      effect: destructive
      questions:
      - How do I cancel an async search that is still running?
      - Can I delete the saved results of a finished async search?
      instructions:
      - text: Delete async search {id}.
        slots:
          id: path.id
      - text: Cancel the running asynchronous search {id} and discard its stored results.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_async_search/status/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check an async search's status
      effect: read
      questions:
      - Is my async search still running, without pulling back its hits?
      - What is the completion status of a submitted asynchronous search?
      instructions:
      - text: Check the status of async search {id}.
        slots:
          id: path.id
      - text: Tell me if asynchronous search {id} has completed, without returning results.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_async_search'].post
  update:
    x-apievangelist-phrasing:
      intent: Start an async search across all indices
      effect: read
      questions:
      - How do I run a long search in the background across the whole cluster?
      - Can an async search keep its results after it completes?
      instructions:
      - text: Submit an async search across all indices for {q}.
        slots:
          q: query.q
      - text: Start a background cluster-wide search with query {query} and keep results for {keep_alive}.
        slots:
          query: requestBody.query
          keep_alive: query.keep_alive
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_async_search'].post
  update:
    x-apievangelist-phrasing:
      intent: Start an async search on specific indices
      effect: read
      questions:
      - How do I launch an asynchronous search limited to one index or data stream?
      - Can I get partial results from a background search on a single index while it runs?
      instructions:
      - text: Submit an async search on index {index} for {q}.
        slots:
          index: path.index
          q: query.q
      - text: Run query {query} asynchronously against {index} only.
        slots:
          query: requestBody.query
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the next scroll batch via GET
      effect: read
      questions:
      - How do I fetch the next page of a scrolling search using a GET request?
      - Is the scroll API still recommended for paging past 10,000 hits?
      instructions:
      - text: Get the next scroll page for scroll ID {scroll_id} with a GET.
        slots:
          scroll_id: requestBody.scroll_id
      - text: Continue scrolling {scroll_id} via GET and keep the context alive for {scroll}.
        slots:
          scroll_id: requestBody.scroll_id
          scroll: requestBody.scroll
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll'].post
  update:
    x-apievangelist-phrasing:
      intent: Get the next scroll batch via POST
      effect: read
      questions:
      - Can I POST a scroll ID in the body to retrieve the next batch of hits?
      - What body fields does the POST scroll request take?
      instructions:
      - text: POST scroll_id {scroll_id} to pull the next batch of results.
        slots:
          scroll_id: requestBody.scroll_id
      - text: Advance my scrolling search {scroll_id} with a POST body, extending it by {scroll}.
        slots:
          scroll_id: requestBody.scroll_id
          scroll: requestBody.scroll
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll'].delete
  update:
    x-apievangelist-phrasing:
      intent: Clear scroll contexts named in the body
      effect: destructive
      questions:
      - How do I free the resources held by open scroll contexts?
      - Can I clear several scrolling searches by listing their IDs in the body?
      instructions:
      - text: Clear the scroll contexts {scroll_id}.
        slots:
          scroll_id: requestBody.scroll_id
      - text: Release all the scrolling search contexts listed in the request body.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll/{scroll_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the next scroll batch by ID in the path (GET)
      effect: read
      questions:
      - Can I put the scroll ID in the URL path of a GET to keep paging?
      - What does the GET scroll endpoint with an ID in the path return?
      instructions:
      - text: GET /_search/scroll/{path_scroll_id} to fetch the next page, body scroll_id {scroll_id}.
        slots:
          path_scroll_id: path.scroll_id
          scroll_id: requestBody.scroll_id
      - text: Page forward through scroll {path_scroll_id} using the path-ID GET variant.
        slots:
          path_scroll_id: path.scroll_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll/{scroll_id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Get the next scroll batch by ID in the path (POST)
      effect: read
      questions:
      - Is there a POST scroll endpoint that takes the scroll ID in the path?
      - Can I POST to a scroll URL that includes the ID to get more hits?
      instructions:
      - text: POST to /_search/scroll/{path_scroll_id} for the next hits, with body scroll_id {scroll_id}.
        slots:
          path_scroll_id: path.scroll_id
          scroll_id: requestBody.scroll_id
      - text: Retrieve more scroll results for {path_scroll_id} through the path-ID POST form.
        slots:
          path_scroll_id: path.scroll_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search/scroll/{scroll_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Clear a scroll context by ID in the path
      effect: destructive
      questions:
      - Can I clear one scroll by putting its ID in the URL?
      - How do I delete a specific scroll search context by path?
      instructions:
      - text: Clear scroll {scroll_id} via its path.
        slots:
          scroll_id: path.scroll_id
      - text: Free the search context for scroll ID {scroll_id} given in the URL.
        slots:
          scroll_id: path.scroll_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_pit'].delete
  update:
    x-apievangelist-phrasing:
      intent: Close a point in time
      effect: destructive
      questions:
      - How do I close a point in time before its keep_alive expires?
      - Why should I close PITs as soon as I finish searching with them?
      instructions:
      - text: Close point in time {id}.
        slots:
          id: requestBody.id
      - text: Release the PIT {id} now that pagination is done.
        slots:
          id: requestBody.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count matching documents in all indices (GET)
      effect: read
      questions:
      - How many documents across the cluster match a simple query string?
      - Can I count every document in all indices with a quick GET?
      instructions:
      - text: Count documents across all indices matching {q}.
        slots:
          q: query.q
      - text: Give me the total document count for the whole cluster using GET.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_count'].post
  update:
    x-apievangelist-phrasing:
      intent: Count matching documents in all indices (POST)
      effect: read
      questions:
      - Can I count cluster-wide matches by POSTing Query DSL in the body?
      - What does the count API return when I post no query at all?
      instructions:
      - text: POST query {query} to count hits in every index.
        slots:
          query: requestBody.query
      - text: Tally all-index matches for this Query DSL body {query}, stopping after {terminate_after} per shard.
        slots:
          query: requestBody.query
          terminate_after: query.terminate_after
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count matching documents in an index (GET)
      effect: read
      questions:
      - How many documents are in one specific index?
      - Can I count hits in a data stream with a q parameter on a GET?
      instructions:
      - text: Count the documents in index {index}.
        slots:
          index: path.index
      - text: Using GET, count how many docs in {index} match {q}.
        slots:
          index: path.index
          q: query.q
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_count'].post
  update:
    x-apievangelist-phrasing:
      intent: Count matching documents in an index (POST)
      effect: read
      questions:
      - Can I POST a Query DSL body to count matches inside one index?
      - How do I count documents in a data stream using a request body query?
      instructions:
      - text: POST query {query} to count matching docs in {index}.
        slots:
          query: requestBody.query
          index: path.index
      - text: Tally hits in index {index} for body query {query} with min score {min_score}.
        slots:
          index: path.index
          query: requestBody.query
          min_score: query.min_score
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_explain/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Explain a document's match with a query string
      effect: read
      questions:
      - Why does a particular document match my query string, and how was it scored?
      - Can I see a score explanation for one document using a GET request?
      instructions:
      - text: Explain why document {id} in {index} matches {q}.
        slots:
          id: path.id
          index: path.index
          q: query.q
      - text: Show the relevance score breakdown of doc {id} from index {index} via GET.
        slots:
          id: path.id
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_explain/{id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Explain a document's match with a Query DSL body
      effect: read
      questions:
      - Why doesn't a certain document match the Query DSL I POST?
      - Can I post a full query body to get a scoring explanation for one doc?
      instructions:
      - text: POST query {query} to explain the match for document {id} in {index}.
        slots:
          query: requestBody.query
          id: path.id
          index: path.index
      - text: Tell me how {index} doc {id} scores against this DSL body {query}.
        slots:
          index: path.index
          id: path.id
          query: requestBody.query
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_field_caps'].get
  update:
    x-apievangelist-phrasing:
      intent: Get field capabilities across all indices (GET)
      effect: read
      questions:
      - Which fields are searchable and aggregatable across the entire cluster?
      - Can I check a field's type in every index with a simple GET?
      instructions:
      - text: Get field capabilities for {fields} across all indices.
        slots:
          fields: query.fields
      - text: Show cluster-wide capabilities of fields {fields}, including unmapped ones, via GET.
        slots:
          fields: query.fields
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_field_caps'].post
  update:
    x-apievangelist-phrasing:
      intent: Get field capabilities across all indices (POST)
      effect: read
      questions:
      - Can I POST an index filter to narrow field capabilities cluster-wide?
      - How do I include runtime mappings when checking field capabilities in every index?
      instructions:
      - text: POST a field caps request for {fields} over all indices filtered by {index_filter}.
        slots:
          fields: requestBody.fields
          index_filter: requestBody.index_filter
      - text: Check capabilities of body fields {fields} everywhere, adding runtime mappings {runtime_mappings}.
        slots:
          fields: requestBody.fields
          runtime_mappings: requestBody.runtime_mappings
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_field_caps'].get
  update:
    x-apievangelist-phrasing:
      intent: Get field capabilities for an index (GET)
      effect: read
      questions:
      - What types do fields have in one particular index?
      - Can I see whether a field is aggregatable in a single data stream using GET?
      instructions:
      - text: Get field capabilities for {fields} in index {index}.
        slots:
          fields: query.fields
          index: path.index
      - text: Via GET, list which fields in {index} are searchable and aggregatable.
        slots:
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_field_caps'].post
  update:
    x-apievangelist-phrasing:
      intent: Get field capabilities for an index (POST)
      effect: read
      questions:
      - Can I POST an index filter when checking field types in one index?
      - How do I check field capabilities for a single index with a request body?
      instructions:
      - text: POST a field caps request for body fields {fields} on {index}.
        slots:
          fields: requestBody.fields
          index: path.index
      - text: Check {index} field capabilities with index filter {index_filter} in the body.
        slots:
          index: path.index
          index_filter: requestBody.index_filter
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_msearch'].get
  update:
    x-apievangelist-phrasing:
      intent: Run several searches in one GET request
      effect: read
      questions:
      - How do I send multiple searches in a single NDJSON request?
      - Can I cap how many searches run concurrently in a multi-search GET?
      instructions:
      - text: Run a multi-search GET across all indices.
      - text: Execute these batched searches with GET, at most {max_concurrent_searches} at a time.
        slots:
          max_concurrent_searches: query.max_concurrent_searches
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_msearch'].post
  update:
    x-apievangelist-phrasing:
      intent: Run several searches in one POST request
      effect: read
      questions:
      - Can I POST header and body pairs to run many searches at once?
      - What format does the multi-search POST body use?
      instructions:
      - text: POST a multi-search NDJSON body over the whole cluster.
      - text: Send a batch of searches by POST, defaulting to indices {index}.
        slots:
          index: query.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_msearch'].get
  update:
    x-apievangelist-phrasing:
      intent: Run several searches on an index (GET)
      effect: read
      questions:
      - Can I run multiple searches that default to one index with a GET?
      - How do I batch searches scoped to a specific data stream using GET?
      instructions:
      - text: Run a multi-search GET against index {index}.
        slots:
          index: path.index
      - text: Using GET, execute my batched queries on {index} with {max_concurrent_searches} running concurrently.
        slots:
          index: path.index
          max_concurrent_searches: query.max_concurrent_searches
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_msearch'].post
  update:
    x-apievangelist-phrasing:
      intent: Run several searches on an index (POST)
      effect: read
      questions:
      - Can I POST an NDJSON batch of searches that target one index by default?
      - How do I run many queries against a single index in one POST?
      instructions:
      - text: POST a multi-search body to index {index}.
        slots:
          index: path.index
      - text: Batch-run searches on {index} via POST and return typed aggregation keys.
        slots:
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_msearch/template'].get
  update:
    x-apievangelist-phrasing:
      intent: Run several templated searches (GET)
      effect: read
      questions:
      - How do I run multiple stored search templates in one GET request?
      - Can I batch templated searches cluster-wide with a GET?
      instructions:
      - text: Run a multi search template GET over all indices.
      - text: Execute several templated searches by GET with search type {search_type}.
        slots:
          search_type: query.search_type
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_msearch/template'].post
  update:
    x-apievangelist-phrasing:
      intent: Run several templated searches (POST)
      effect: read
      questions:
      - Can I POST a newline-delimited file of template searches with curl?
      - Why should I use --data-binary when posting multiple templated searches?
      instructions:
      - text: POST a multi search template NDJSON body across the cluster.
      - text: Send my batch of templated queries by POST, limited to {max_concurrent_searches} concurrent.
        slots:
          max_concurrent_searches: query.max_concurrent_searches
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_msearch/template'].get
  update:
    x-apievangelist-phrasing:
      intent: Run several templated searches on an index (GET)
      effect: read
      questions:
      - Can I run multiple search templates that default to one index using GET?
      - How do I batch template-based searches on a single data stream with a GET?
      instructions:
      - text: Run a multi search template GET on index {index}.
        slots:
          index: path.index
      - text: Using GET, execute several stored templates against {index}.
        slots:
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_msearch/template'].post
  update:
    x-apievangelist-phrasing:
      intent: Run several templated searches on an index (POST)
      effect: read
      questions:
      - Can I POST a batch of template searches scoped to one index?
      - How do I send multiple templated queries for a single index in one POST?
      instructions:
      - text: POST an NDJSON list of stored template calls against {index}.
        slots:
          index: path.index
      - text: Batch my templated searches on {index} by POST with search type {search_type}.
        slots:
          index: path.index
          search_type: query.search_type
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_pit'].post
  update:
    x-apievangelist-phrasing:
      intent: Open a point in time on an index
      effect: write
      questions:
      - How do I get a consistent snapshot of an index to paginate with search_after?
      - How long does a point in time stay open?
      instructions:
      - text: Open a point in time on {index} kept alive for {keep_alive}.
        slots:
          index: path.index
          keep_alive: query.keep_alive
      - text: Create a PIT over {index} for {keep_alive}, filtered by {index_filter}.
        slots:
          index: path.index
          keep_alive: query.keep_alive
          index_filter: requestBody.index_filter
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_rank_eval'].get
  update:
    x-apievangelist-phrasing:
      intent: Evaluate search ranking quality (GET)
      effect: read
      questions:
      - How do I measure the quality of my search rankings against typical queries?
      - Can I score ranking relevance cluster-wide with a GET request?
      instructions:
      - text: Evaluate ranking quality for rated requests {requests} across all indices.
        slots:
          requests: requestBody.requests
      - text: Using GET, score these rated queries {requests} with metric {metric}.
        slots:
          requests: requestBody.requests
          metric: requestBody.metric
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_rank_eval'].post
  update:
    x-apievangelist-phrasing:
      intent: Evaluate search ranking quality (POST)
      effect: read
      questions:
      - Can I POST rated search requests and a metric like precision to evaluate ranking?
      - Which relevance metric does ranking evaluation compute by POST?
      instructions:
      - text: POST a rank evaluation of {requests} over the whole cluster.
        slots:
          requests: requestBody.requests
      - text: Compute {metric} for my rated queries {requests} by POST.
        slots:
          metric: requestBody.metric
          requests: requestBody.requests
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_rank_eval'].get
  update:
    x-apievangelist-phrasing:
      intent: Evaluate ranking quality on an index (GET)
      effect: read
      questions:
      - How well does one index rank results for my set of test queries?
      - Can I evaluate relevance for a single index using GET?
      instructions:
      - text: Evaluate ranking of {requests} on index {index}.
        slots:
          requests: requestBody.requests
          index: path.index
      - text: Using GET, measure {metric} for rated queries {requests} against {index}.
        slots:
          metric: requestBody.metric
          requests: requestBody.requests
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_rank_eval'].post
  update:
    x-apievangelist-phrasing:
      intent: Evaluate ranking quality on an index (POST)
      effect: read
      questions:
      - Can I POST rated requests to judge search quality for one index?
      - How do I benchmark a single data stream's relevance with a POST?
      instructions:
      - text: POST a rank eval of {requests} to index {index}.
        slots:
          requests: requestBody.requests
          index: path.index
      - text: Benchmark relevance of {index} by POST using metric {metric} and rated queries {requests}.
        slots:
          index: path.index
          metric: requestBody.metric
          requests: requestBody.requests
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_render/template'].get
  update:
    x-apievangelist-phrasing:
      intent: Render an inline search template (GET)
      effect: read
      questions:
      - How do I preview the query a search template produces for given params?
      - Can I render an inline template source with a GET request?
      instructions:
      - text: Render template source {source} with params {params}.
        slots:
          source: requestBody.source
          params: requestBody.params
      - text: Using GET, show the search body that stored template {id} expands to.
        slots:
          id: requestBody.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_render/template'].post
  update:
    x-apievangelist-phrasing:
      intent: Render an inline search template (POST)
      effect: read
      questions:
      - Can I POST a Mustache template and params to see the resulting request body?
      - What does a rendered search template look like before it runs?
      instructions:
      - text: POST template {source} with {params} and return the rendered query.
        slots:
          source: requestBody.source
          params: requestBody.params
      - text: Expand the stored template named {id} in the body by POST, filling {params}.
        slots:
          id: requestBody.id
          params: requestBody.params
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_render/template/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Render a stored search template by ID (GET)
      effect: read
      questions:
      - How do I render a stored template by putting its ID in the URL with GET?
      - Can I check what a saved search template outputs for certain params?
      instructions:
      - text: Render stored template {id} with params {params}.
        slots:
          id: path.id
          params: requestBody.params
      - text: Via GET, preview the query produced by saved template {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_render/template/{id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Render a stored search template by ID (POST)
      effect: read
      questions:
      - Can I POST params to a stored template's URL to render it?
      - Is there a POST form of rendering a template that takes the ID in the path?
      instructions:
      - text: POST params {params} to render saved template {id}.
        slots:
          params: requestBody.params
          id: path.id
      - text: Show the expanded search request for path template {id} using POST.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search all indices with a GET request
      effect: read
      questions:
      - How do I search every index in the cluster with a simple query string?
      - If I send both q and a body query, which one is used?
      instructions:
      - text: Search all indices for {q}.
        slots:
          q: query.q
      - text: Run a cluster-wide GET search for {q} returning {size} hits sorted by {sort}.
        slots:
          q: query.q
          size: query.size
          sort: query.sort
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search'].post
  update:
    x-apievangelist-phrasing:
      intent: Search all indices with a POST request body
      effect: read
      questions:
      - Can I POST Query DSL with aggregations to search the whole cluster?
      - Does the search API support kNN vector search in a POST body?
      instructions:
      - text: POST search query {query} across every index.
        slots:
          query: requestBody.query
      - text: Run a cluster-wide body search with aggregations {aggregations} and size {size}.
        slots:
          aggregations: requestBody.aggregations
          size: requestBody.size
      - text: Do a kNN search across all indices using {knn}.
        slots:
          knn: requestBody.knn
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search one index with a GET request
      effect: read
      questions:
      - How do I search a single index or data stream for a keyword?
      - Can I page through one index's hits with from and size on a GET?
      instructions:
      - text: Search index {index} for {q}.
        slots:
          index: path.index
          q: query.q
      - text: Using GET, return hits {from} to {from}+{size} from {index}.
        slots:
          from: query.from
          size: query.size
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_search'].post
  update:
    x-apievangelist-phrasing:
      intent: Search one index with a POST request body
      effect: read
      questions:
      - Can I POST a Query DSL body with highlighting to search one index?
      - How do I run aggregations over a single data stream in a POST search?
      instructions:
      - text: POST query {query} to search {index}.
        slots:
          query: requestBody.query
          index: path.index
      - text: Aggregate {index} with {aggregations} in a body search.
        slots:
          index: path.index
          aggregations: requestBody.aggregations
      - text: Search {index} using retriever {retriever} in the request body.
        slots:
          index: path.index
          retriever: requestBody.retriever
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_mvt/{field}/{zoom}/{x}/{y}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a geo vector tile with a GET request
      effect: read
      questions:
      - How do I get a Mapbox vector tile of geo points for a map tile with GET?
      - Can I fetch geospatial hits as a binary vector tile by zoom, x and y?
      instructions:
      - text: Get vector tile {zoom}/{x}/{y} of field {field} in {index}.
        slots:
          zoom: path.zoom
          x: path.x
          y: path.y
          field: path.field
          index: path.index
      - text: Using GET, build a {grid_agg} grid tile at {zoom}/{x}/{y} for {field} from index {index}.
        slots:
          grid_agg: query.grid_agg
          zoom: path.zoom
          x: path.x
          y: path.y
          field: path.field
          index: path.index
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{index}/_mvt/{field}/{zoom}/{x}/{y}'].post
  update:
    x-apievangelist-phrasing:
      intent: Get a geo vector tile with a POST body
      effect: read
      questions:
      - Can I POST a query and aggregations to filter what goes into a vector tile?
      - What request body options does the vector tile POST search accept?
      instructions:
      - text: POST query {query} for tile {zoom}/{x}/{y} on {field} in {index}.
        slots:
          query: requestBody.query
          zoom: path.zoom
          x: path.x
          y: path.y
          field: path.field
          index: path.index
      - text: Render map tile {zoom}/{x}/{y} of geo field {field} in {index} with body aggs {aggs}.
        slots:
          zoom: path.zoom
          x: path.x
          y: path.y
          field: path.field
          index: path.index
          aggs: requestBody.aggs
      method: generated
      generated: '2026-09-26'
- target: $.paths['/_search_shards'].get
  update:
    x-apievangelist-phrasing:
      intent: See which shards a search would hit (GET)
      effect: read
      questions:
      - Which indices and shards would a search against the whole cluster run on?
      - Can I troubleshoot routing and shard preferences with a GET?
      instructions:
      - text: Show the search shards across all indices.
      - text: Using GET, list shards a search with routing {routing} would target.
        slots:
          routing: query.routing
      method: generated
      generated: '2026-09-26'


# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elk-stack/refs/heads/main/overlays/elk-stack-search-api-phrasing-overlay.yaml