elasticsearch watcher

뜨개발자·2024년 7월 4일
0

23일간 로그인하지 않은 사람에게 보내는 이메일 알림

#클로드 3.5 소네트
{
  "trigger": {
    "schedule": {
      "cron": "0 0 * * *"  // 매일 자정에 실행
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["users-index"],
        "body": {
          "query": {
            "bool": {
              "must_not": [
                {
                  "range": {
                    "last_login": {
                      "gte": "now-23d"
                    }
                  }
                }
              ],
              "must": [
                {
                  "term": {
                    "active": true
                  }
                }
              ]
            }
          }
        },
        "size": 1000
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },
  "actions": {
    "email_inactive_users": {
      "foreach": "ctx.payload.hits.hits",
      "max_iterations": 1000,
      "email": {
        "to": "{{_source.email}}",
        "subject": "Login Reminder",
        "body": {
          "html": """
          <p>Dear {{_source.name}},</p>
          <p>We noticed that you haven't logged in to our service for 23 days. 
          We miss you and hope to see you soon!</p>
          <p>Best regards,<br>Your Service Team</p>
          """
        }
      }
    }
  }
}
#챗gpt 3.5
PUT _watcher/watch/login_watch
{
  "trigger": {
    "schedule": {
      "daily": { "at": "12:00" }     // 매일 낮 12시에 실행
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["user-logs"],    // 사용자 로그가 저장된 인덱스
        "body": {
          "query": {
            "bool": {
              "must_not": {
                "range": {
                  "last_login": {    // 마지막 로그인 시간 필드
                    "gte": "now-23d/d",
                    "lte": "now/d"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total.value": {
        "gt": 0     // 하나 이상의 사용자가 검색되면 실행
      }
    }
  },
  "actions": {
    "email_action": {
      "email": {
        "to": "{{#ctx.payload.hits.hits}}{{_source.email}}{{/ctx.payload.hits.hits}}", // 사용자 이메일 주소
        "subject": "로그인 알림",
        "body": "귀하의 계정은 23일 동안 로그인하지 않았습니다."
      }
    }
  }
}
profile
뜨개질하는 개발자

0개의 댓글