Я создал эту новую тему, чтобы избежать путаницы, но это связано со следующей темой, которая была решена:Из данной области, в зависимости от содержания, mofify его и хранить его в различных новых областях
Modify the content of a field using logstash
Допустим, что в поле называется code
содержание также слова, как: notification
или mountain
, и я хотел бы создать еще одно поле называется code_word
хранить эти слова.
Итак, из поля code
в базе данных, в зависимости от его содержания, оно создало бы code_short
и code_word
.
Я пытался что-то вроде этого:
grok {
match => { "code" => "(?<prefix>[a-zA-Z]+)000000%{INT:suffix} %{WORD:word}" }
add_field => { "code_short" => "%{prefix}%{suffix}"}
add_field => { "code_word" => "%{word}"}
}
но явно не работает: _grokparsefailure.
Я не уверен, как это сделать, мне интересно, можно ли это сделать с помощью условного типа «если».
Это выход:
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 43,
"max_score": 1,
"hits": [
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg75",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.360Z",
"code": "molfix-oat",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg77",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.365Z",
"code": "PO0000002221",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8C",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.372Z",
"code": "ST0000003302",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8K",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.382Z",
"code": "notifications-set",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8M",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.384Z",
"code": "PO0000001111",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8N",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.385Z",
"code": "PO0000000808",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8R",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.388Z",
"code": "TT0000000009",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8U",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.391Z",
"code": "ST0000001113",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8c",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.398Z",
"code": "test/bin/UT0",
"@version": "1",
"tags": []
}
},
{
"_index": "test1",
"_type": "data",
"_id": "AVo3yno0PoyZlwFEpg8g",
"_score": 1,
"_source": {
"@timestamp": "2017-02-13T14:05:00.400Z",
"code": "PO0000001203",
"@version": "1",
"tags": []
}
}
]
}
}
спасибо за ваш быстрый reply.Now он создает «code_word» с тем же содержимым, что и «code». Он больше не создает форматированное поле «code_short». Что я пытаюсь достичь, из данного поля «код» генерирует два разных поля в зависимости от его содержимого, «code_short» с содержимым типа PO1209 и th e other, «code_word» с только словами, что поле «code» имеет некоторые его строки. Любая другая идея сделать эту работу? Большое спасибо – Ubbi099
Мне нужно увидеть один образец значения «code», который не будет соответствовать шаблону grok и что вам нужно будет сохранить его в «code_word». То, как я это вижу, если шаблон совпадает, вы получаете только «code_short», и если шаблон не соответствует, вы получаете только «code_word» – Val
. Было бы так: Примеры образцов поля «код» хранящиеся в "code_word", значения: Molfix, notificaion-овсяная, коры головного мозга, И примеры образцов поле "код", чтобы хранить в "code_short", значения перед форматированием: PO0000001209, ST0000000909, После сохранения в «code_short» они будут выглядеть так: PO1209, ST0909, Спасибо. – Ubbi099