> ## Documentation Index
> Fetch the complete documentation index at: https://ngquct-docs-fix-500-query-results.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Elasticsearch

> Connect to Elasticsearch with a Query DSL console, index browsing, and document editing

export const name_0 = "Elasticsearch"

export const plugin_0 = "Elasticsearch Driver"

Two things share this connection. A grid browses and edits documents by `_id`, and a console that takes a method, a path and an optional JSON body the way Kibana Dev Tools does. There is no SQL behind either. Elasticsearch 7.x and 8.x are supported, over the REST API.

The {name_0} driver is not in the app. Picking {name_0} in the **Choose a Database** sheet offers the
download before the form opens, and opening a saved {name_0} connection installs it without asking.
**Settings > Plugins > Browse > {plugin_0}** installs it up front. See [Plugins](/features/plugins).

## Quick setup

Click **Create Connection…**, select **Elasticsearch**, enter host and port, pick an **Auth Method**, then click **Save & Connect**.

The form shows no Database field: a connection reaches one cluster, and its indices are the objects.

## Connection settings

| Field                     | Description                                                                               |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| **Host**                  | Cluster host, `localhost` for a local node                                                |
| **Port**                  | REST port, `9200` by default                                                              |
| **Auth Method**           | Username & Password, API Key, or None                                                     |
| **API Key**               | Base64-encoded key. Shown when **Auth Method** is API Key                                 |
| **Skip TLS Verification** | Advanced section. Trusts any certificate, even under **Verify CA** or **Verify Identity** |

## Authentication

| Auth Method             | What is sent                                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Username & Password** | HTTP Basic, from the standard credential fields                                                                                                                 |
| **API Key**             | An `Authorization: ApiKey` header carrying the field verbatim. Paste the `encoded` value the create API key request returns, or your own base64 of `id:api_key` |
| **None**                | Nothing. For a cluster with security off                                                                                                                        |

8.x ships with security and TLS on, so **None** is a 7.x or dev-cluster setting.

## Browsing indices

The sidebar lists indices as tables, hiding names that begin with `.`.

Columns come from the index mapping. `object` and `nested` fields flatten to dotted paths such as `address.city`, and array and object values render as JSON in the cell. Every document also carries `_id`, `_index` and `_score`; `_id` is the primary key and all three are read-only.

Column filters translate to `term`, `range`, `wildcard`, `terms` and `exists`. The **Raw SQL** filter column is the exception: its text goes over as a `query_string`, so write Lucene there, `name:Widget` or `price:>10`, matched across all fields. Sorting a `text` field targets its `.keyword` subfield when the mapping has one.

Grid edits become REST calls keyed by `_id`: `POST /index/_update/{id}`, `PUT /index/_doc/{id}` and `DELETE /index/_doc/{id}`.

## Query DSL console

<Frame caption="Query DSL console with a search result grid">
  <img className="block dark:hidden" src="https://mintcdn.com/ngquct-docs-fix-500-query-results/hA72m8tSnRe3b-ew/images/elasticsearch-query-console.png?fit=max&auto=format&n=hA72m8tSnRe3b-ew&q=85&s=59ecace3ff8f8ab81252e9da30b9d802" alt="Elasticsearch Query DSL console with a search result rendered as a grid" width="1560" height="960" data-path="images/elasticsearch-query-console.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/ngquct-docs-fix-500-query-results/hA72m8tSnRe3b-ew/images/elasticsearch-query-console-dark.png?fit=max&auto=format&n=hA72m8tSnRe3b-ew&q=85&s=d535770e19678a5d8b90c50b759e1f9b" alt="Elasticsearch Query DSL console with a search result rendered as a grid" width="1560" height="960" data-path="images/elasticsearch-query-console-dark.png" />
</Frame>

```http theme={null}
GET /my-index/_search
{
  "query": {
    "match": { "title": "search term" }
  }
}
```

Search responses render as a grid, `GET /_cat/indices?format=json` and other array responses tabularize, and anything else is shown as formatted JSON.

## SSL/TLS

New connections start on **Disabled**, plain HTTP with no fallback to anything else. Every other mode goes over HTTPS: **Preferred** and **Required (skip verify)** accept a self-signed certificate, **Verify CA** and **Verify Identity** check it. See [SSL/TLS](/connections/ssl).

## Limitations

* The SQL endpoint (`_sql`) is not reachable. Use the console.
* The sidebar lists concrete indices only, and hides every name beginning with `.`. Aliases and data streams do not appear; address them by name in the console.
* Sorting on `_id`, or on a `text` field with no `.keyword` subfield, does nothing: the column is dropped from the sort and the rows keep the order they had. Add the subfield, or sort a keyword field.
* Paging past 10,000 documents switches to `search_after` over a point-in-time. That threshold is fixed, so an index with a lowered `max_result_window` errors before the switch; raise the index setting back to 10,000.
* An array or object cell is cut at 10,000 characters and ends in `...`. Saving an edit to a cut cell stores the fragment; change long values in the console.
* No mapping or schema editing, no transactions, no import, no [SSH tunnel](/connections/ssh-tunneling).
* OpenSearch is not supported.

## Troubleshooting

### Authentication failed: …

The username and password, or the API key, were rejected. On 8.x check the connection is on HTTPS at all: security is on by default there.

### Connection failed: …

A TLS or network failure. For a self-signed certificate set **SSL Mode** to **Required (skip verify)**, or turn on **Skip TLS Verification**.

## Related

* [Import & Export](/features/import-export)
* [Filtering](/features/filtering)
