elasticsearch
config_error
ai_generated
true
ElasticsearchParseException: circular reference detected in pipeline [my_pipeline]
ID: elasticsearch/ingest-pipeline-circular-reference
88%Fix Rate
85%Confidence
1Evidence
2023-04-12First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 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.htmlWorkarounds
-
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.
-
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.
中文步骤
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.
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:
-
95% fail
Restarting Elasticsearch nodes does not break the circular pipeline definition; the pipeline configuration persists in the cluster state.
-
80% fail
Deleting the pipeline by name fails because the circular reference prevents the pipeline from being parsed or removed cleanly.