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.