> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lucidworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL Indexer

> Job configuration specifications

[localhost link]: http://localhost:3000/docs/lucidworks-search/09-developer-documentation/config-specs/jobs/etl-indexer

[mintlify link]: https://doc.lucidworks.com/docs/lucidworks-search/09-developer-documentation/config-specs/jobs/etl-indexer.md

The ETL (Extract, Transform, Load) Indexer job enables bulk ingestion of structured data from Google Cloud Storage into Lucidworks Search.

Unlike the Parallel Bulk Loader job, the ETL Indexer runs as a Kubernetes operator instead of a Spark job, so it works in Lucidworks Search environments where Spark isn't available.

> [!NOTE]
>
> ETL indexing is available in Lucidworks Search 5.19 and later. It is turned off by default for existing clients in Lucidworks Search 5.19.
> Contact your Lucidworks representative to request ETL indexing.

> **Key questions to get you started**
>
> Powered by Lucidworks Agent Studio

## Usage

Use this job to load CSV, JSON, JSONL, or Parquet files from a Google Cloud Storage bucket into one or more Lucidwokrs Search collections, either directly to Solr for higher throughput or through a Lucidworks Search indexing pipeline when you need to transform data at index time.

For conceptual information about the ETL Indexer, see [ETL indexing](/docs/lucidworks-search/08-administration/jobs-scheduling/etl-indexing.md).

## Index to multiple collections

A single ETL Indexer job can index data to more than one collection. Add a collection configuration for each destination collection.

### Indexing groups

The **Indexing Group** field controls whether collections in the same job are indexed serially or in parallel:

* **Serially:** Collections with the same indexing group are indexed one after the other.
* **In parallel:** Collections with different indexing groups are indexed at the same time.

The default indexing group is `0`, so collections are indexed serially unless you assign different indexing groups.

> [!NOTE]
>
> Parallel indexing only improves throughput when the collections are on separate hardware.
> If the collections share hardware, use the same indexing group.

## Glob expressions

The **Data Source** field accepts either a URL to a specific file in cloud storage or a glob expression that matches multiple files within a directory structure.

| Pattern | Matches |
| - | - |
| `*` | Any sequence of characters within a single path component. Does not cross directory separators. |
| `**` | Any sequence of characters across directory boundaries, recursively. |
| `?` | Any single character. |
| `[...]` | Any one character in the brackets, such as `[abc]` or `[0-9]`. |
| `{a,b}` | Any one of the comma-separated alternatives, such as `{csv,json}`. |

For example, this expression matches every CSV file two directory levels below any date-named directory from 2026 in `etl-data`:

```
gs://EXAMPLE_BUCKET_PATH/etl-data/2026-??-??/*/*/*.csv
```

## Configuration properties


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.