Elastic Stack · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Elk Stack Document API
34 actions
34 updates
phrasing
extends
openapi/elk-stack-document-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.
What the actions change
x-apievangelist-phrasing
Targets 34 · first 16 shown; the file carries all of them
$.info
$.paths['/_bulk'].put
$.paths['/_bulk'].post
$.paths['/{index}/_bulk'].put
$.paths['/{index}/_bulk'].post
$.paths['/{index}/_create/{id}'].put
$.paths['/{index}/_create/{id}'].post
$.paths['/{index}/_doc/{id}'].get
$.paths['/{index}/_doc/{id}'].put
$.paths['/{index}/_doc/{id}'].post
$.paths['/{index}/_doc/{id}'].delete
$.paths['/{index}/_doc/{id}'].head
$.paths['/{index}/_delete_by_query'].post
$.paths['/_delete_by_query/{task_id}/_rethrottle'].post
$.paths['/{index}/_source/{id}'].get
$.paths['/{index}/_source/{id}'].head
OpenAPI Overlay
# 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 Document API
version: 1.0.0
extends: openapi/elk-stack-document-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: 33
- target: $.paths['/_bulk'].put
update:
x-apievangelist-phrasing:
intent: Run bulk document actions via PUT on any index
effect: write
questions:
- Can I send a PUT to the cluster-wide bulk endpoint with actions naming their own indices?
- Which query options let a PUT bulk request fail when the target is not an alias?
instructions:
- text: Send a PUT bulk request with mixed index and delete actions, running them through pipeline {pipeline}.
slots:
pipeline: query.pipeline
- text: Using PUT on the root bulk endpoint, apply my batch with refresh set to {refresh}.
slots:
refresh: query.refresh
method: generated
generated: '2026-09-26'
- target: $.paths['/_bulk'].post
update:
x-apievangelist-phrasing:
intent: Bulk index, update or delete documents
effect: write
questions:
- How do I index thousands of documents in one request instead of one call each?
- Can a single bulk POST mix create, update and delete actions across several indices?
- What happens to throughput when I batch writes with the bulk API?
instructions:
- text: POST this NDJSON batch of create, update and delete actions to the bulk endpoint.
- text: Bulk-load my documents with routing {routing} and wait for {wait_for_active_shards} active shards.
slots:
routing: query.routing
wait_for_active_shards: query.wait_for_active_shards
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_bulk'].put
update:
x-apievangelist-phrasing:
intent: Run bulk document actions via PUT on one index
effect: write
questions:
- Can I PUT a bulk batch scoped to one index so the actions don't repeat the index name?
- Does a per-index PUT bulk request let me require the target to be a data stream?
instructions:
- text: PUT a bulk batch of actions into index {index}.
slots:
index: path.index
- text: Using PUT, bulk write to {index} with require_data_stream {require_data_stream}.
slots:
index: path.index
require_data_stream: query.require_data_stream
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_bulk'].post
update:
x-apievangelist-phrasing:
intent: Bulk write documents into a single index
effect: write
questions:
- How do I bulk load documents into one specific index without naming it on every line?
- Can I see which ingest pipelines ran for each document in an index-scoped bulk load?
instructions:
- text: Bulk index my documents into {index} and list the executed pipelines.
slots:
index: path.index
- text: POST a bulk batch to index {index} through ingest pipeline {pipeline}.
slots:
index: path.index
pipeline: query.pipeline
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_create/{id}'].put
update:
x-apievangelist-phrasing:
intent: Create a document only if its ID is new (PUT)
effect: write
questions:
- How do I add a document with a specific ID and fail if that ID already exists?
- Can I create a new document with PUT on the _create endpoint and have it refresh immediately?
instructions:
- text: Create document {id} in {index} with PUT, failing if it already exists.
slots:
id: path.id
index: path.index
- text: PUT a brand-new document {id} into {index} and refresh with {refresh}.
slots:
id: path.id
index: path.index
refresh: query.refresh
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_create/{id}'].post
update:
x-apievangelist-phrasing:
intent: Create a document only if its ID is new (POST)
effect: write
questions:
- Can I POST to the _create endpoint so a duplicate document ID is rejected rather than overwritten?
- Which pipeline option applies when I POST a create-only document into a data stream?
instructions:
- text: POST to _create to add document {id} to {index} only if the ID is unused.
slots:
id: path.id
index: path.index
- text: Using POST on _create, insert document {id} in {index} via pipeline {pipeline}.
slots:
id: path.id
index: path.index
pipeline: query.pipeline
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a document by its ID
effect: read
questions:
- How do I fetch a single document and its source when I know the index and ID?
- Is reading one document by ID realtime, or does it wait for the index refresh?
- Can I pull only certain stored fields of a document by ID?
instructions:
- text: Get document {id} from index {index}.
slots:
id: path.id
index: path.index
- text: Fetch document {id} in {index}, returning only source fields {_source_includes}.
slots:
id: path.id
index: path.index
_source_includes: query._source_includes
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc/{id}'].put
update:
x-apievangelist-phrasing:
intent: Index or replace a document with PUT
effect: write
questions:
- How do I save a JSON document under my own ID, overwriting it if it exists?
- Can I make a PUT document write conditional on its sequence number and primary term?
instructions:
- text: PUT this JSON as document {id} in {index}, replacing any existing version.
slots:
id: path.id
index: path.index
- text: Overwrite document {id} in {index} only if its seq_no is {if_seq_no}.
slots:
id: path.id
index: path.index
if_seq_no: query.if_seq_no
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc/{id}'].post
update:
x-apievangelist-phrasing:
intent: Index or replace a document with POST and an ID
effect: write
questions:
- Can I POST a document to _doc with an explicit ID to add or overwrite it?
- Which op_type should I pass to a POST _doc request so it only creates?
instructions:
- text: POST my JSON to _doc as document {id} in index {index}.
slots:
id: path.id
index: path.index
- text: Using POST with ID {id}, write to {index} with op_type {op_type}.
slots:
id: path.id
index: path.index
op_type: query.op_type
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a document by ID
effect: destructive
questions:
- How do I remove a single document from an index when I know its ID?
- Why can't I delete a document directly from a data stream by ID?
instructions:
- text: Delete document {id} from index {index}.
slots:
id: path.id
index: path.index
- text: Remove document {id} in {index} only if its primary term is {if_primary_term}.
slots:
id: path.id
index: path.index
if_primary_term: query.if_primary_term
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc/{id}'].head
update:
x-apievangelist-phrasing:
intent: Check whether a document exists
effect: read
questions:
- Is there a quick way to tell if a document ID exists without downloading it?
- What status do I get back when a document I'm checking for is missing?
instructions:
- text: Check whether document {id} exists in {index}.
slots:
id: path.id
index: path.index
- text: Confirm document {id} is present in {index} using routing {routing}.
slots:
id: path.id
index: path.index
routing: query.routing
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_delete_by_query'].post
update:
x-apievangelist-phrasing:
intent: Delete all documents matching a query
effect: destructive
questions:
- How do I delete every document that matches a search, not just one ID?
- Can I cap how many matching documents a delete-by-query removes?
- What happens on version conflicts while deleting documents by query?
instructions:
- text: Delete all documents in {index} matching query {query}.
slots:
index: path.index
query: requestBody.query
- text: Delete up to {max_docs} matching documents from {index}, proceeding on conflicts.
slots:
index: path.index
max_docs: requestBody.max_docs
- text: Run a delete-by-query on {index} for Lucene query {q} in the background.
slots:
index: path.index
q: query.q
method: generated
generated: '2026-09-26'
- target: $.paths['/_delete_by_query/{task_id}/_rethrottle'].post
update:
x-apievangelist-phrasing:
intent: Change the speed of a running delete by query
effect: write
questions:
- Can I slow down a delete-by-query that is hammering my cluster?
- Does speeding up a running delete by query take effect immediately?
instructions:
- text: Rethrottle delete-by-query task {task_id} to {requests_per_second} requests per second.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
- text: Unthrottle the delete by query task {task_id} by setting its rate to {requests_per_second}.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_source/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get only a document's source
effect: read
questions:
- How do I get just the original JSON body of a document without the metadata wrapper?
- Can I filter which source fields come back when retrieving only a document's _source?
instructions:
- text: Return just the _source of document {id} in {index}.
slots:
id: path.id
index: path.index
- text: Get the raw source of {id} from {index}, excluding fields {_source_excludes}.
slots:
id: path.id
index: path.index
_source_excludes: query._source_excludes
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_source/{id}'].head
update:
x-apievangelist-phrasing:
intent: Check whether a document's source is stored
effect: read
questions:
- How can I tell if a document's _source is available, since it may be disabled in the mapping?
- Is there a HEAD check for the stored source rather than the document itself?
instructions:
- text: Check whether the _source of document {id} in {index} is available.
slots:
id: path.id
index: path.index
- text: Verify a stored source exists for {id} in {index} at version {version}.
slots:
id: path.id
index: path.index
version: query.version
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_doc'].post
update:
x-apievangelist-phrasing:
intent: Add a document with an auto-generated ID
effect: write
questions:
- How do I add a document and let the cluster generate its ID for me?
- Can I append a log event to a data stream without choosing an ID?
instructions:
- text: Add this JSON document to {index} with an auto-generated ID.
slots:
index: path.index
- text: Append a new event to data stream {index} through pipeline {pipeline}, letting it assign the ID.
slots:
index: path.index
pipeline: query.pipeline
method: generated
generated: '2026-09-26'
- target: $.paths['/_reindex'].post
update:
x-apievangelist-phrasing:
intent: Copy documents from one index to another
effect: write
questions:
- How do I copy all documents from an old index into a new one?
- Can I reindex only a subset of documents or transform them with a script on the way?
- What's the way to limit how fast a reindex runs so it doesn't overload the cluster?
instructions:
- text: Reindex documents from {source} into {dest}.
slots:
source: requestBody.source
dest: requestBody.dest
- text: Copy at most {max_docs} documents from {source} to {dest}.
slots:
max_docs: requestBody.max_docs
source: requestBody.source
dest: requestBody.dest
- text: Reindex {source} into {dest} applying script {script}.
slots:
source: requestBody.source
dest: requestBody.dest
script: requestBody.script
method: generated
generated: '2026-09-26'
- target: $.paths['/_mget'].get
update:
x-apievangelist-phrasing:
intent: Fetch many documents by ID across indices
effect: read
questions:
- How do I retrieve a batch of documents from different indices in one GET?
- Can a multi-get pull documents by index and ID pairs with no index in the URL?
instructions:
- text: Multi-get the documents listed in {docs}, each with its own index and ID.
slots:
docs: requestBody.docs
- text: With a GET multi-get across indices, fetch {docs} returning only stored fields {stored_fields}.
slots:
docs: requestBody.docs
stored_fields: query.stored_fields
method: generated
generated: '2026-09-26'
- target: $.paths['/_mget'].post
update:
x-apievangelist-phrasing:
intent: Fetch many documents by ID across indices (POST)
effect: read
questions:
- Can I POST a multi-get body naming documents from several indices at once?
- Is there a POST form of multi-get for clients that can't send a GET body?
instructions:
- text: POST a multi-get for document specs {docs} spread over several indices.
slots:
docs: requestBody.docs
- text: Using POST multi-get with no index in the path, retrieve {docs} realtime {realtime}.
slots:
docs: requestBody.docs
realtime: query.realtime
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_mget'].get
update:
x-apievangelist-phrasing:
intent: Fetch many documents by ID from one index
effect: read
questions:
- How do I get several documents from one index by just listing their IDs?
- Can I multi-get from a single index and filter the source fields returned?
instructions:
- text: Get documents with IDs {ids} from index {index}.
slots:
ids: requestBody.ids
index: path.index
- text: From {index}, GET multiple documents {ids} including only fields {_source_includes}.
slots:
index: path.index
ids: requestBody.ids
_source_includes: query._source_includes
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_mget'].post
update:
x-apievangelist-phrasing:
intent: Fetch many documents from one index (POST)
effect: read
questions:
- Can I POST a list of IDs to one index's multi-get endpoint?
- Is there a POST version of index-scoped multi-get that honors routing?
instructions:
- text: POST IDs {ids} to the multi-get endpoint of {index}.
slots:
ids: requestBody.ids
index: path.index
- text: Using POST, multi-get {ids} in {index} with routing {routing}.
slots:
ids: requestBody.ids
index: path.index
routing: query.routing
method: generated
generated: '2026-09-26'
- target: $.paths['/_mtermvectors'].get
update:
x-apievangelist-phrasing:
intent: Get term vectors for many documents
effect: read
questions:
- How do I get term statistics for several documents across indices in one GET request?
- Can I request term vectors for artificial documents I provide rather than stored ones?
instructions:
- text: Get term vectors for documents {docs} across my indices.
slots:
docs: requestBody.docs
- text: Fetch multi term vectors for {docs} with term statistics {term_statistics}.
slots:
docs: requestBody.docs
term_statistics: query.term_statistics
method: generated
generated: '2026-09-26'
- target: $.paths['/_mtermvectors'].post
update:
x-apievangelist-phrasing:
intent: Get term vectors for many documents (POST)
effect: read
questions:
- Can I POST a batch of document references to get their term vectors together?
- Which positions and offsets can I include when posting a multi term vectors request?
instructions:
- text: POST a multi term vectors request for documents {docs}.
slots:
docs: requestBody.docs
- text: Using POST, get term vectors for {docs} restricted to fields {fields}.
slots:
docs: requestBody.docs
fields: query.fields
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_mtermvectors'].get
update:
x-apievangelist-phrasing:
intent: Get term vectors for many documents in one index
effect: read
questions:
- How do I get term vectors for a list of document IDs within a single index?
- Can I skip field statistics when pulling term vectors for many docs in one index?
instructions:
- text: Get term vectors for IDs {ids} in index {index}.
slots:
ids: query.ids
index: path.index
- text: Fetch multi term vectors from {index} for {ids} with field statistics {field_statistics}.
slots:
index: path.index
ids: query.ids
field_statistics: query.field_statistics
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_mtermvectors'].post
update:
x-apievangelist-phrasing:
intent: Get term vectors for many docs in an index (POST)
effect: read
questions:
- Can I POST document specs to one index's multi term vectors endpoint?
- Is there a POST form for index-scoped multi term vectors with payloads included?
instructions:
- text: POST a multi term vectors request for {docs} to index {index}.
slots:
docs: requestBody.docs
index: path.index
- text: Using POST on {index}, get term vectors for {docs} including payloads {payloads}.
slots:
index: path.index
docs: requestBody.docs
payloads: query.payloads
method: generated
generated: '2026-09-26'
- target: $.paths['/_reindex/{task_id}/_rethrottle'].post
update:
x-apievangelist-phrasing:
intent: Change the speed of a running reindex
effect: write
questions:
- Can I throttle a reindex that's already running?
- How do I remove the rate limit from a reindex in progress?
instructions:
- text: Rethrottle reindex task {task_id} to {requests_per_second} documents per second.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
- text: Unthrottle reindex {task_id} completely by setting requests per second to {requests_per_second}.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_termvectors/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get term vectors for one stored document
effect: read
questions:
- How do I see the terms, frequencies and positions for the fields of a single document?
- Can I get term statistics for one stored document using a different analyzer per field?
instructions:
- text: Get term vectors for document {id} in {index}.
slots:
id: path.id
index: path.index
- text: Show term vectors of {id} in {index} for fields {fields} with offsets.
slots:
id: path.id
index: path.index
fields: query.fields
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_termvectors/{id}'].post
update:
x-apievangelist-phrasing:
intent: Get term vectors for one stored document (POST)
effect: read
questions:
- Can I POST a filter body to trim the term vectors returned for a single document?
- Is there a POST variant of per-document term vectors that accepts per-field analyzers?
instructions:
- text: POST a term vectors request for document {id} in {index}.
slots:
id: path.id
index: path.index
- text: Using POST, get term vectors of {id} in {index} filtered by {filter}.
slots:
id: path.id
index: path.index
filter: requestBody.filter
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_termvectors'].get
update:
x-apievangelist-phrasing:
intent: Get term vectors for an artificial document
effect: read
questions:
- How do I analyze term vectors for text I supply that isn't stored in the index?
- Can I get term statistics for an ad-hoc document against an index's mappings?
instructions:
- text: Compute term vectors in {index} for text I supply as {doc}, not a stored document.
slots:
index: path.index
doc: requestBody.doc
- text: Analyze supplied doc {doc} against {index} with per-field analyzer {per_field_analyzer}.
slots:
doc: requestBody.doc
index: path.index
per_field_analyzer: requestBody.per_field_analyzer
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_termvectors'].post
update:
x-apievangelist-phrasing:
intent: Get term vectors for an artificial doc (POST)
effect: read
questions:
- Can I POST an inline document to an index to get its term vectors without saving it?
- Is there a POST route for term vectors of supplied text with no document ID?
instructions:
- text: POST inline document {doc} to {index} and return its term vectors.
slots:
doc: requestBody.doc
index: path.index
- text: Using POST with no ID, compute term vectors of {doc} in {index} with positions {positions}.
slots:
doc: requestBody.doc
index: path.index
positions: query.positions
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_update/{id}'].post
update:
x-apievangelist-phrasing:
intent: Partially update a document
effect: write
questions:
- How do I change a few fields of a document without resending the whole thing?
- Can I update a document with a script, or insert it if it doesn't exist yet?
- How many times will a document update retry when it hits a version conflict?
instructions:
- text: Update document {id} in {index} with partial fields {doc}.
slots:
id: path.id
index: path.index
doc: requestBody.doc
- text: Run script {script} on document {id} in {index}.
slots:
script: requestBody.script
id: path.id
index: path.index
- text: 'Upsert document {id} in {index}: apply {doc}, or insert {upsert} if missing.'
slots:
id: path.id
index: path.index
doc: requestBody.doc
upsert: requestBody.upsert
method: generated
generated: '2026-09-26'
- target: $.paths['/{index}/_update_by_query'].post
update:
x-apievangelist-phrasing:
intent: Update all documents matching a query
effect: write
questions:
- How do I apply a change to every document that matches a query?
- Can I re-run an ingest pipeline over existing documents in place after a mapping change?
- What happens if no query is given to update by query?
instructions:
- text: Update every document in {index} matching {query} with script {script}.
slots:
index: path.index
query: requestBody.query
script: requestBody.script
- text: Reprocess all documents in {index} in place through pipeline {pipeline}.
slots:
index: path.index
pipeline: query.pipeline
method: generated
generated: '2026-09-26'
- target: $.paths['/_update_by_query/{task_id}/_rethrottle'].post
update:
x-apievangelist-phrasing:
intent: Change the speed of a running update by query
effect: write
questions:
- Can I speed up or slow down an update-by-query that's in progress?
- Does lowering the rate of a running update by query apply right away?
instructions:
- text: Rethrottle update-by-query task {task_id} to {requests_per_second} per second.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
- text: Slow the update by query job {task_id} down to {requests_per_second} requests per second.
slots:
task_id: path.task_id
requests_per_second: query.requests_per_second
method: generated
generated: '2026-09-26'