如果在过去n秒内没有输入,则实施观察者发送邮件

时间:2016-09-08 07:21:04

标签: elasticsearch elasticsearch-plugin

我正在尝试为以下场景设置观察者

如果过去n小时内没有文档插入索引,请发出警报。这样我们就可以检查节点和弹性搜索之间的连接故障是否存在任何问题。

为了实现这样的场景,我使用了以下json进行复制。

curl -XPUT 'http://10.x.x.1:9200/_watcher/watch/log_error_watch' -d '{
  "trigger" : { "schedule" : { "interval" : "10s" } },
  "input" : {
    "search" : {
      "request" : {
        "indices" : [ "test" ],
        "body" : {
          "query" : {
            "match_all" : {}
          }
        }
      }
    }
  },
  "condition": {
    "array_compare": {
      "ctx.payload.aggregations.test.buckets" : { 
        "path": "doc_count" ,
        "lt": { 
          "value": 1, 
          "quantifier": "some" 
        }
      }
    }
  },
  "actions" : {
    "log_error" : {
      "logging" : {
        "text" : "No data for past 10 seconds"
      }
    }
  }
}'

但它没有在日志中添加警报消息。有人可以帮助我在条件部分内部的逻辑。

1 个答案:

答案 0 :(得分:0)

请改用此条件:

string query = "IF EXISTS (SELECT mkey from xxacl_pN_LEASES_ALL where project_id = @ID AND building_id =@BUILD_ID and SALES_USER_ID =@User_ID) UPDATE xxacl_pN_LEASES_ALL SET .....";
SqlConnection con = new SqlConnection(ConStr);
con.Open();
SqlCommnad cmd = new SqlCommand(query, con);
cmd.Paramaters.AddWithValue("@ID", ddlProject.SelectedValue);
cmd.Paramaters.AddWithValue("@BUILID",ddlBuilding.SelectedValu);
cmd.Paramaters.AddWithValue("@user_ID",ddlSalesUser.SelectedValue);
...