Loading

Redis connector reference

The Redis connector is built with the Elastic connectors Python framework and is available as a self-managed self-managed connector. View the source code for this connector (branch main, compatible with Elastic 9.0).

This connector was introduced in Elastic 8.13.0, available as a self-managed self-managed connector.

To use this connector, satisfy all self-managed connector prerequisites. Importantly, you must deploy the connectors service on your own infrastructure. You have two deployment options:

Note

This connector is in technical preview and is subject to change. The design and code is less mature than official GA features and is being provided as-is with no warranties. Technical preview features are not subject to the support SLA of official GA features.

To set up this connector in the UI, select the Redis tile when creating a new connector under Search → Connectors.

For additional operations, see Connectors UI in Kibana.

You can deploy the Redis connector as a self-managed connector using Docker. Follow these instructions.

Refer to DOCKER.md in the elastic/connectors repo for more details.

Find all available Docker images in the official registry.

Tip

We also have a quickstart self-managed option using Docker Compose, so you can spin up all required services at once: Elasticsearch, Kibana, and the connectors service. Refer to this README in the elastic/connectors repo for more information.

host (required)

The IP of your Redis server/cloud. Example:

  • 127.0.0.1
  • redis-12345.us-east-1.ec2.cloud.redislabs.com
port (required)

Port where the Redis server/cloud instance is hosted. Example:

  • 6379
username (optional)

Username for your Redis server/cloud. Example:

  • default
password (optional)

Password for your Redis server/cloud instance. Example:

  • changeme
database (required)

List of database index for your Redis server/cloud. * will fetch data from all databases. Example:

  • 0,1,2
  • *

This field is ignored when using advanced sync rules.

ssl_enabled
Toggle to use SSL/TLS. Disabled by default.
mutual_tls_enabled
Toggle to use secure mutual SSL/TLS. Ensure that your Redis deployment supports mutual SSL/TLS connections. Disabled by default. Depends on ssl_enabled.
tls_certfile
Specifies the certificate from the Certificate Authority. The value of the certificate is used to validate the certificate presented by the Redis instance. Depends on mutual_tls_enabled.
tls_keyfile
Specifies the client private key. The value of the key is used to validate the connection in the Redis instance. Depends on mutual_tls_enabled.

The connector syncs the following objects and entities:

  • KEYS and VALUES of every database index
Note
  • Permissions are not synced. All documents indexed to an Elastic deployment will be visible to all users with access to the relevant Elasticsearch index.

Basic sync rules are identical for all connectors and are available by default.

Advanced sync rules are defined through a source-specific DSL JSON snippet.

Use advanced sync rules to filter data at the Redis source, without needing to index all data into Elasticsearch.

They take the following parameters:

  1. database: Specify the Redis database index as an integer value.

  2. key_pattern: 2. key_pattern: Pattern for finding keys in Redis.

  3. type: Key type for the Redis.

    Supported values:

    • HASH
    • LIST
    • SET
    • STREAM
    • STRING
    • ZSET
Note

Provide at least one of the following: key_pattern or type, or both.

Fetch database records where keys start with alpha:

[
  {
    "database": 0,
    "key_pattern": "alpha*"
  }
]

Fetch database records with exact match by specifying the full key name:

[
  {
    "database": 0,
    "key_pattern": "alpha"
  }
]

Fetch database records where keys start with test1, test2 or test3:

[
  {
    "database": 0,
    "key_pattern": "test[123]"
  }

Exclude database records where keys start with test1, test2 or test3:

[
  {
    "database": 0,
    "key_pattern": "test[^123]"
  }
]

Fetch all database records:

[
  {
    "database": 0,
    "key_pattern": "*"
  }
]

Fetch all database records where type is SET:

[
  {
    "database": 0,
    "key_pattern": "*",
    "type": "SET"
  }
]

Fetch database records where type is SET:

[
  {
    "database": 0,
    "type": "SET"
  }
]

The connector framework enables operators to run functional tests against a real data source, using Docker Compose. You don’t need a running Elasticsearch instance or Redis source to run this test.

Refer to Connector testing for more details.

To perform E2E testing for the Redis connector, run the following command:

$ make ftest NAME=redis

For faster tests, add the DATA_SIZE=small flag:

make ftest NAME=redis DATA_SIZE=small

By default, DATA_SIZE=MEDIUM.

  • The last modified time is unavailable when retrieving keys/values from the Redis database. As a result, all objects are indexed each time an advanced sync rule query is executed.

Refer to Known issues for a list of known issues for all connectors.

See Troubleshooting.

See Security.