Я пытаюсь создать конвейер в Elasticsearch.Прежде чем узнать, какой конвейер использовать, я должен проверить, поэтому я создал конвейер, который выполняет маршрутизацию, например:
{
"description": "A pipeline of pipelines for log files",
"version": 1,
"processors": [
{
"pipeline": {
"if": """ctx.applicative_code =~ /AFA[@]959[@]333-SERVICE[@]1.0.0.SIG/ """,
"name": "ged_pipeline"
}
},
{
"fail": {
"message": "This pipeline requires applicative_code to be one of: 'AFA@959@333-SERVICE@1.0.0.SIG'"
}
}
]
}
Чтобы проверить его, я использую API _simulate:
POST _ingest/pipeline/logs_pipeline/_simulate
{
"docs": [
{
"_source": {
"message_log": "127.0.0.1:50613||Download||agent||S0000||PM000||Q||{5C7A4600-C422-4D81-BD02-39072E06F646}",
"applicative_code": "AFA@959@333-SERVICE@1.0.0.SIG"
}
}
]
}
И ответ такой:
"error" : {
"root_cause" : [
{
"type" : "exception",
"reason" : "java.lang.IllegalArgumentException: org.elasticsearch.ingest.common.FailProcessorException: This pipeline requires applicative_code to be one of: 'AFA@959@333-SERVICE@1.0.0.SIG'",
"header" : {
"processor_type" : "fail"
}
}
],
"type" : "exception",
"reason" : "java.lang.IllegalArgumentException: org.elasticsearch.ingest.common.FailProcessorException: This pipeline requires applicative_code to be one of: 'AFA@959@333-SERVICE@1.0.0.SIG'",
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "org.elasticsearch.ingest.common.FailProcessorException: This pipeline requires applicative_code to be one of: 'AFA@959@333-SERVICE@1.0.0.SIG'",
"caused_by" : {
"type" : "fail_processor_exception",
"reason" : "This pipeline requires applicative_code to be one of: 'AFA@959@333-SERVICE@1.0.0.SIG'"
}
Итак, похоже, что мое состояние не соответствует.Причина, по которой я здесь использую регулярное выражение, заключается в том, что специальный символ "@" портит сравнение строк.То, что я пробовал до сих пор, в состоянии if конвейера:
"if": """ctx.applicative_code == "AFA@959@333-SERVICE@1.0.0.SIG" """
Результат: не работает, интерпретируется символ @, и я не могу избежать его, используя \
"if": """ctx.applicative_code.compareTo("AFA@959@333-SERVICE@1.0.0.SIG") """
Результат: То же самое, @ интерпретируется
Есть идеи?