Elastic MySQL connector referenceedit

The Elastic MySQL connector is a connector for MySQL data sources.

Availability and prerequisitesedit

This connector is available as a native connector in Elastic versions 8.5.0 and later. To use this connector as a native connector, satisfy all native connector requirements.

This connector is also available as a connector client from the Python connectors framework. To use this connector as a connector client, satisfy all connector client requirements.

This connector has no additional prerequisites beyond the shared requirements, linked above.

This connector is in beta 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. Beta features are not subject to the support SLA of official GA features.

Usageedit

To use this connector as a native connector, use the use a connector workflow. See Native connectors.

To use this connector as a connector client, use the build a connector workflow. See Connector clients and frameworks.

For additional operations, see Usage.

Known issuesedit

There are no known issues for this connector.

See Known issues for any issues affecting all connectors.

Troubleshootingedit

See Troubleshooting.

Securityedit

See Security.

Compatibilityedit

This connector is compatible with MySQL 5.6 and later.

The connector is also compatible with MariaDB databases compatible with the above.

The data source and your Elastic deployment must be able to communicate with each other over a network.

Configurationedit

Each time you create an index to be managed by this connector, you will create a new connector configuration. You will need some or all of the following information about the data source.

Host

The IP address or domain name of the MySQL host, excluding port. Examples:

  • 192.158.1.38
  • localhost
Port

The port of the MySQL host. Examples:

  • 3306
  • 3307
Username

The MySQL username the connector will use.

The user must have access to the configured databases. You may want to create a dedicated, read-only user for each connector.

Password
The MySQL password the connector will use.
Databases

The MySQL databases to sync. One or more database names, separated by commas. Each database must be accessible using the configured username and password.

Examples:

  • products,categories
  • orders

Documents and syncsedit

The following describes the default syncing behavior for this connector. Use sync rules and ingest pipelines to customize syncing for specific indices.

All records in the MySQL databases included in your connector configuration are extracted and transformed into documents in your Elasticsearch index.

  • For each row in your MySQL database table, the connector creates one Elasticsearch document.
  • For each column, the connector transforms the column into an Elasticsearch field.
  • Elasticsearch dynamically maps MySQL data types to Elasticsearch data types.
  • Tables with no primary key defined are skipped.
  • Field values that represent other records are replaced with the primary key for that record (composite primary keys are joined with _).

The Elasticsearch mapping is created when the first document is created.

Each sync is a "full" sync.

For each MySQL row discovered:

  • If it does not exist, the document is created in Elasticsearch.
  • If it already exists in Elasticsearch, the Elasticsearch document is replaced and the version is incremented.
  • If an existing Elasticsearch document no longer exists in the MySQL table, it is deleted from Elasticsearch.

Sync rulesedit

The following sections describe Sync rules for this connector.

Advanced rules for MySQL can be used to pass arbitrary SQL statements to a MySQL instance. The queries are executed against the specified database/table pair.

For example:

{
    "database_one": {
        "table_one": "SELECT ... FROM ...;",
        "table_two": "SELECT ... FROM ...;",
    },
    "database_two": {
        "table_one": "SELECT ... FROM ...;"
    }
}

Framework and sourceedit

This connector is included in the Python connectors framework.

View the source code for this connector (branch 8.7, compatible with Elastic 8.7).