The 30 second answer
New documents become searchable only after a refresh opens a new segment, which by default happens every second, but only for indices searched in the last thirty seconds. A flush is about durability: it commits segments to disk and trims the translog. Refreshing more often makes updates visible sooner but creates more small segments and merge work, so bulk loads often relax it.
Refresh. Indexed documents first sit in an in-memory buffer. A refresh writes them into a new segment in the filesystem cache and opens it for search, which is far cheaper than committing to disk. The Elasticsearch docs: by default, it "periodically refreshes indices every second, but only on indices that have received one search request or more in the last 30 seconds." So "always one second" is not quite right, and an index nobody searches may not refresh until the next search arrives.
Flush and the translog. Durability comes from the transaction log: each indexing operation is written to the translog, which can be replayed after a crash. A flush performs a Lucene commit, writing segments durably, and starts a new translog. Refresh controls visibility; flush controls durability and recovery time.
Trade-off. More frequent refreshes make new prices or stock searchable sooner but produce more tiny segments, more merging and less effective caching. The indexing-speed guide recommends bulk requests, a longer refresh_interval during large loads, and temporarily fewer replicas for an initial load, restored afterwards.
Read-your-writes. If a caller must see its own write immediately, use refresh=wait_for on that request rather than forcing refreshes for everyone, and only where it is really needed.
For a catalog. Decide freshness per field: price and stock changes may need seconds, descriptive text can lag. Collapse repeated updates per product before they reach Elasticsearch. Zalando's November 2023 migration post describes intake through the _bulk endpoint and per-index write aliases. How ingestion feeds the index is covered in How do you ingest product updates with CDC or application events?.