※9/25 一部内容を変更しました。
お世話になります。
Watcherの実装に関して、質問させて頂きます。
▼inputのindex
・A_indexとB_indexの紐づき項目は「tenantId」
・tenantIdにaddressは一意
A_index | |||
---|---|---|---|
_id | tenantId | eventid | memo |
1 | 001 | 111 | test1 |
2 | 002 | 111 | test2 |
B_index | ||
---|---|---|
id | tenantid | address |
1 | 001 | aaa@test.com |
2 | 002 | bbb@test.com |
▼質問内容
A_indexに対象の「eventid」が発生した場合、
action句にてA_indexのinput取得件数分、webhookを実行する際に以下を実現したいです。
実現方法について、ご教示頂けますでしょうか。
"webhook"の"body"
①"to_address"
inputのfirstの「tenantId」に紐づく、secondの"address"を設定
例:tenantIdが"001"の場合は、"aaa@test.com",
tenantIdが"002"の場合は、"bbb@test.com"を設定
➁"body"
inputのfirstの「tenantId」に紐づく検出イベント:{{_source.memo}}
を設定
例:tenantIdが"001"の場合は、"test1"
tenantIdが"002"の場合は、"test2"を設定
▼現段階のWatcher実装内容
{
"trigger": {
"schedule": {
"interval": "2m"
}
},
"input": {
"chain": {
"inputs": [
{
"first": {
"search": {
"request": {
"search_type": "query_then_fetch",
"indices": [
"A_index"
],
"rest_total_hits_as_int": true,
"body": {
"size": 10,
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "{{ctx.trigger.scheduled_time}}||-2m"
}
}
},
{
"term": {
"eventid": "111"
}
}
]
}
}
}
}
}
}
},
{
"second": {
"search": {
"request": {
"search_type": "query_then_fetch",
"indices": [
"B_index"
],
"rest_total_hits_as_int": true,
"body": {
"size": 100,
"query": {
"match_all": {}
}
}
}
}
}
}
]
}
},
"condition": {
"script": {
"source": "return ctx.payload.first.hits.total > 0 && ctx.payload.second.hits.total > 0",
"lang": "painless"
}
},
"actions": {
"aaa": {
"throttle_period_in_millis": 600000,
"foreach": "ctx.payload.first.hits.hits",
"max_iterations": 500,
"webhook": {
"scheme": "https",
"host": "XXXXXXXXXX",
"port": 111,
"method": "post",
"path": "XXXXXX",
"params": {},
"headers": {
"X-Api-Key": "XXXXXXXXXXX",
"Content-Type": "application/json"
},
"body": """{
"to_address": "{{ctx.payload.second.hits.hits._source.address}}",
"subject": "test",
"body": "{{#ctx.payload.first.hits.hits.0}}***********2.イベント発生内容*************
検出イベント:{{_source.memo}}
*********************************{{/ctx.payload.first.hits.hits.0}}
"
}"""
}
}
}
}
詳細な質問で恐縮ですが、ご教示頂けますと幸いです。
宜しくお願い致します。