Scope. This guide covers process-instance indexing only — the
process_instance-* indices written by process-engine. Audit logs (audit-logs index, written directly by audit-core over HTTPS) and search workloads (data-search, read-only) do not flow through this pipeline.Before you start
- Read the prerequisites: Review the Intro to Elasticsearch section first
- Choose your strategy: Decide between Kafka (recommended for production) or HTTP indexing based on your infrastructure
- Check permissions: Ensure you have access to modify process-engine configurations
Quick decision: Kafka vs HTTP
Critical difference: Only the Kafka strategy provides out-of-the-box support for time-based partitioning through the
transforms.routeTS.timestamp.format configuration (see later in this guide). The HTTP strategy does not support time-based partitioning as a built-in feature.Configuration overview
All indexing is controlled by these core settings:Global indexing control
FLOWX_INDEXING_ENABLED defaults to true. Only set this variable if you want to disable indexing by setting it to false.Strategy selection
Performance considerations (FlowX defaults)
Default configuration:- Monthly indices:
yyyyMMformat for time-based partitioning (Kafka only) - 2 shards + 0 replicas (code default): bump replicas based on your high-availability requirements
- Primary shards per year: 24 (2 primary × 12 monthly indices) — well under Elasticsearch’s 1000 shard default limit; each replica adds another 24
- If indexing becomes slow: Check physical resources and shard size
- If monthly indices become too large: Switch to weekly indices (
yyyyww) - For high parallel indexing load: Add more primary shards
- High availability: Set
FLOWX_ELASTICSEARCH_INDEXSETTINGS_REPLICASto at least1in production for resilience to a single node loss
HTTP-only setting
Setup: Kafka indexing (recommended)
Step 1: Configure the process engine
Add these environment variables to your process-engine configuration:Step 2: Deploy Kafka Connect
Compatibility matrix
Multiple sink connector implementations also work, as long as they are compatible with both the deployed Kafka and Elasticsearch version deployed. This guide uses the Confluent
kafka-connect-elasticsearch plugin as the reference path.- Kafka cluster (installed with Strimzi operator)
- Elasticsearch cluster (installed with eck-operator)
- Convert ES certificates to JKS format (see commands below)
Step 3: Configure the Elasticsearch Sink Connector
Key settings explained:transforms.routeTS.timestamp.format: Controls index partitioning (monthly=yyyyMM, daily=yyyyMMdd)transforms.routeTS.topic.format: Must start with your configured index namebatch.size: Adjust based on throughput needs (1000 is good default)
Step 4: Verify the setup
Check Kafka Connect status:Setup: HTTP indexing (simple)
Configure the process engine
For HTTP indexing, update your process-engine configuration:Kafka topics
The process engine publishes indexing records to a topic whose name is composed from the standard FlowX Kafka naming triple:process-engine deployment:
Worked examples:
Important: The
topics: value in your KafkaConnector configuration must match the composed topic for your environment. You must also declare that topic explicitly via your Strimzi KafkaTopic resources — see the warning under Step 3.
Index management
Automatic template creation
The process engine automatically creates Elasticsearch index templates during startup:- HTTP strategy: Creates the index directly with configured shards/replicas
- Kafka strategy: Creates an index template that applies to dynamically created indices
Time-based partitioning (Kafka only)
Choose your partitioning strategy based on data volume and retention needs:Efficient data deletion
Best practice: Delete entire indices rather than individual documents for better performance. With time-based partitioning, you can:Troubleshooting
Common issues
Indexing not working:- Check if indexing is disabled (only if you explicitly set
FLOWX_INDEXING_ENABLED=false) - Verify Elasticsearch connectivity
- Check process-engine logs for errors
- Increase
batch.sizein connector config - Adjust number of shards based on cluster size
- Monitor Elasticsearch cluster health

