Skip to documentation
OriginChainDB Docs
Ask AI
Queries
elasticsearch · quickstart

Connect and run your first search

Available on dedicated deployments. Start with current support and authentication. JavaScript examples use the 7.x client: request payloads go in body, and responses are read from body. Standalone query fragments belong inside the request body.

Connect an Elasticsearch client, index sample documents, and run a search against OriginChainDB.

Before you start

You need two things. The endpoint is your instance URL with /v1/tenants/<your-tenant>/es on the end — this API is available on dedicated deployments. The API key comes from the console. The endpoint already carries your tenant, so a client treats it like any cluster URL.

export OC_ES_URL='https://<your-instance>/v1/tenants/<your-tenant>/es'
export OC_API_KEY='<your-api-key>'

The five steps

  1. 1.
    Install a client

    Any Elasticsearch 7.x client works. The Node client is used here; the same requests work from Python, Java, Go, or plain curl.

    npm install @elastic/elasticsearch@7
  2. 2.
    Point it at your instance

    Pass the endpoint as the node and your API key as the auth. info() clears the product check and reports the version.

    import { Client } from '@elastic/elasticsearch'
    
    const es = new Client({
      node: process.env.OC_ES_URL,
      auth: { username: 'originchaindb', password: process.env.OC_API_KEY }
    })
    
    await es.info()   // version 7.14.2
  3. 3.
    Create an index with a mapping

    Declare your fields. text is analyzed for full-text search; keyword is exact and can be grouped and sorted. Indexing explains how to choose, and what happens if you skip this step.

    await es.indices.create({
        index: 'shop.products',
        body: {
            mappings: { properties: {
                    name: { type: 'text' },
                    brand: { type: 'keyword' },
                    price: { type: 'long' },
                    added: { type: 'date' }
                } }
        }
    })
  4. 4.
    Add a document

    It is searchable the moment this returns. There is no refresh to wait for.

    await es.index({
        index: 'shop.products',
        id: 'sku-8842',
        body: {
            name: 'Carbon Marathon', brand: 'Aero',
            price: 149, added: '2026-09-01T00:00:00Z'
        }
    })
  5. 5.
    Search it

    The Query DSL you already write. This one matches the analyzed text and filters on the exact brand.

    const { body: res } = await es.search({
        index: 'shop.products',
        body: {
            query: { bool: {
                    must: [{ match: { name: 'marathon' } }],
                    filter: [{ term: { brand: 'Aero' } }]
                } }
        }
    })
    
    // res.hits.total.value === 1
    // res.hits.hits[0]._source.name === 'Carbon Marathon'

Check it from the shell

The same thing without a client, so you can prove connectivity before wiring an app:

curl "$OC_ES_URL/shop.products/_search" \
  -H "Authorization: Bearer $OC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":{"match":{"name":"marathon"}}}'
if the first call fails

A 401 means the API key is not being sent — check the auth option, or the Authorization: Bearer header if you are using curl. A 404 on a search means the index does not exist yet: create it, or just write a document to it and it will be created for you. A client that refuses to talk at all is usually pinned to the 8.x line — use a 7.x client.

Where to go next

Elasticsearch is a trademark of Elasticsearch B.V., registered in the U.S. and in other countries. OriginChainDB is not affiliated with, endorsed by, or sponsored by Elasticsearch B.V. OriginChainDB implements a compatible HTTP API so that existing Elasticsearch clients can talk to it; it does not distribute Elasticsearch software.