Skip to main content

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

Why Kafka is recommended: The Kafka strategy allows for fire-and-forget communication, eliminating the need for the process engine to wait for indexing requests to complete. This significantly improves performance in high-throughput scenarios.
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: yyyyMM format for time-based partitioning (Kafka only)
  • 2 shards + 2 replicas: Handles up to 200k process instances per day
  • Total shards per month: 6 (2 primary + 4 replica shards)
  • Annual impact: 72 shards per year (well under Elasticsearch’s 1000 shard default limit)
Scaling guidelines:
  • 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: The default 2 replicas provide good redundancy
Important: Each replica is applied per shard, so monitor resource usage when increasing replicas.

HTTP-only setting


Step 1: Configure the process engine

Add these environment variables to your process-engine configuration:

Step 2: Deploy Kafka Connect

Prerequisites:
  • Kafka cluster (installed with Strimzi operator)
  • Elasticsearch cluster (installed with eck-operator)
  • Convert ES certificates to JKS format (see commands below)
Certificate conversion commands:
Deploy KafkaConnect:

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 name
  • batch.size: Adjust based on throughput needs (1000 is good default)
Process instance data archiving integration: If you’re using FlowX’s process instance data archiving feature, ensure your Elasticsearch partitioning configuration aligns with your database partitioning strategy. This is essential because:
  • When archiving process instances, data must be deleted from both the database and Elasticsearch
  • The partitioning intervals should be similar between database and Elasticsearch for consistent data lifecycle management
  • Elasticsearch indexing strategy must be enabled when partitioning is configured

Step 4: Verify the setup

Check Kafka Connect status:
Check connector status:
Verify indices are being created:

Setup: HTTP indexing (simple)

Configure the process engine

For HTTP indexing, update your process-engine configuration:

Kafka topics

The process engine publishes indexing data to this topic: Important: The topic name in your Kafka Sink Connector configuration must match this value.

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:
  1. Check if indexing is disabled (only if you explicitly set FLOWX_INDEXING_ENABLED=false)
  2. Verify Elasticsearch connectivity
  3. Check process-engine logs for errors
Kafka Connect issues:
Certificate issues:
Performance issues:
  • Increase batch.size in connector config
  • Adjust number of shards based on cluster size
  • Monitor Elasticsearch cluster health

Verification queries

Check index pattern:
Query across time-based indices:
Last modified on October 16, 2025