elasticsearch config_error ai_generated true

ElasticsearchParseException: circular reference detected in pipeline [my_pipeline]

ID: elasticsearch/ingest-pipeline-circular-reference

Also available as: JSON · Markdown · 中文
88%Fix Rate
85%Confidence
1Evidence
2023-04-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
7.17.0 active
8.5.0 active
8.10.0 active

Root Cause

An ingest pipeline references itself directly or indirectly through other pipelines, creating an infinite loop that Elasticsearch cannot resolve.

generic

中文

一个摄取管道直接或间接通过其他管道引用自身,创建了Elasticsearch无法解析的无限循环。

Official Documentation

https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-pipeline-processors.html

Workarounds

  1. 90% success Use the Cluster State API to manually remove the pipeline definition from the cluster state: PUT /_cluster/state/metadata?pretty and then patch the metadata to delete the circular pipeline entry. Alternatively, use the following curl command to delete the pipeline after clearing the reference: curl -X DELETE 'localhost:9200/_ingest/pipeline/my_pipeline' but ensure no other pipeline references it first.
    Use the Cluster State API to manually remove the pipeline definition from the cluster state: PUT /_cluster/state/metadata?pretty and then patch the metadata to delete the circular pipeline entry. Alternatively, use the following curl command to delete the pipeline after clearing the reference: curl -X DELETE 'localhost:9200/_ingest/pipeline/my_pipeline' but ensure no other pipeline references it first.
  2. 85% success Temporarily disable the pipeline by setting its version to a negative value via the Cluster Settings API: PUT /_cluster/settings { 'transient': { 'ingest.pipelines.my_pipeline.enabled': false } } and then fix the pipeline definition.
    Temporarily disable the pipeline by setting its version to a negative value via the Cluster Settings API: PUT /_cluster/settings { 'transient': { 'ingest.pipelines.my_pipeline.enabled': false } } and then fix the pipeline definition.

中文步骤

  1. Use the Cluster State API to manually remove the pipeline definition from the cluster state: PUT /_cluster/state/metadata?pretty and then patch the metadata to delete the circular pipeline entry. Alternatively, use the following curl command to delete the pipeline after clearing the reference: curl -X DELETE 'localhost:9200/_ingest/pipeline/my_pipeline' but ensure no other pipeline references it first.
  2. Temporarily disable the pipeline by setting its version to a negative value via the Cluster Settings API: PUT /_cluster/settings { 'transient': { 'ingest.pipelines.my_pipeline.enabled': false } } and then fix the pipeline definition.

Dead Ends

Common approaches that don't work:

  1. 95% fail

    Restarting Elasticsearch nodes does not break the circular pipeline definition; the pipeline configuration persists in the cluster state.

  2. 80% fail

    Deleting the pipeline by name fails because the circular reference prevents the pipeline from being parsed or removed cleanly.