FlowiseAI/Flowise · error · Error
${e}
Error message
${e} What it means
Generic catch-all wrapping `OpenSearchVectorStore.fromDocuments` in the OpenSearch node's add path. Any failure (client construction, index creation, bulk indexing, auth) is re-thrown as `new Error(e)`, losing the original stack and collapsing the error into its string form.
Source
Thrown at packages/components/nodes/vectorstores/OpenSearch/OpenSearch.ts:137
const client = getOpenSearchClient(opensearchURL, user, password)
const flattenDocs = docs && docs.length ? flatten(docs) : []
const finalDocs = []
for (let i = 0; i < flattenDocs.length; i += 1) {
if (flattenDocs[i] && flattenDocs[i].pageContent) {
finalDocs.push(new Document(flattenDocs[i]))
}
}
try {
await OpenSearchVectorStore.fromDocuments(finalDocs, embeddings, {
client,
indexName: indexName,
vectorSearchOptions: getVectorSearchOptions(nodeData)
})
return { numAdded: finalDocs.length, addedDocs: finalDocs }
} catch (e) {
throw new Error(e)
}
}
}
async init(nodeData: INodeData, _: string, options: ICommonObject): Promise<any> {
const embeddings = nodeData.inputs?.embeddings as Embeddings
const indexName = nodeData.inputs?.indexName as string
const output = nodeData.outputs?.output as string
const topK = nodeData.inputs?.topK as string
const k = topK ? parseFloat(topK) : 4
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const opensearchURL = getCredentialParam('openSearchUrl', credentialData, nodeData)
const user = getCredentialParam('user', credentialData, nodeData)
const password = getCredentialParam('password', credentialData, nodeData)
const client = getOpenSearchClient(opensearchURL, user, password)
const vectorStore = new OpenSearchVectorStore(embeddings, {View on GitHub (pinned to abe4a8601a)
Solutions
- Read the flattened message for the OpenSearch client error (auth, connection, mapping).
- Verify the OpenSearch URL is reachable and the protocol/port are correct.
- Confirm auth method matches the cluster requirement (basic / API key / SigV4).
- Ensure the k-NN plugin is enabled and the index mapping's vector dimension matches the embedding output.
- Re-wrap preserving the original error (see fix).
Example fix
// before
} catch (e) {
throw new Error(e)
}
// after — preserve cause
} catch (e) {
throw e instanceof Error ? e : new Error(String(e))
} Defensive patterns
Strategy: try-catch
Validate before calling
// preflight: parse URL and ping
const u = new URL(openSearchUrl)
if (!['http:', 'https:'].includes(u.protocol)) throw new Error('OpenSearch URL must be http(s)')
const ping = await fetch(`${u.origin}/_cluster/health`, { method: 'GET' })
if (!ping.ok) throw new Error(`OpenSearch unreachable: ${ping.status}`) Type guard
function isOpenSearchUrl(v: string): boolean {
try { const u = new URL(v); return ['http:', 'https:'].includes(u.protocol) } catch { return false }
} Try / catch
try {
await OpenSearchVectorStore.fromDocuments(finalDocs, embeddings, { client, indexName })
} catch (e) {
throw e instanceof Error ? e : new Error(`OpenSearch fromDocuments failed: ${String(e)}`)
} Prevention
- Confirm protocol/port/auth match the cluster requirement.
- Ensure the k-NN plugin is installed and the mapping dimension matches.
- Avoid `throw new Error(e)` — rethrow the original.
- Use SigV4 signing for AWS OpenSearch.
When it happens
Trigger: OpenSearch endpoint unreachable; wrong protocol/port in the URL; auth (basic/API key/AWS SigV4) misconfigured; vector dimension mismatch with the k-NN index mapping; bulk indexing rejected due to mapping conflicts.
Common situations: Self-hosted OpenSearch behind a different port than configured; AWS OpenSearch requiring SigV4 but only basic auth supplied; k-NN plugin not installed; embedding model changed dimension without re-creating the index mapping.
Related errors
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/5f9feb51f1449d5e.
Report an issue: GitHub.