我们每天必须搜索数百个警报以测试新的欺诈系统。问题是我们必须查看所有非常耗时的警报。
第一个查询获取警报列表和每个详细信息。
第二查询获取已使用的ID,并搜索3个特定事件,其中可能为0。如果没有记录,则将" null"添加到用户ID,n"到设备ID,并在金额
中添加$ 0.00需要将两个查询的结果放入提取表中。
index=mbank_p_database sourcetype=mbank_event EventTypeID=1095
| dedup OLBUserID
| table _time, SessionID, EventTypeID, OLBUserID, score, risk_rating, reason_code
| sort _time
index=mbank_p_database sourcetype=mbank_event EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012 OLBUserID=<Results from 1st query>
| table UDID, Amount
如果用户ID的第二个查询中没有结果,请制作" udid" =" n",而"量" = $ 0.00
``
Table layout of results of combined query:
--_time = DateTimestamp (1st Query)
--SessionID = "SessionID" (1st Query)
--OLBUserID = "UserID" (1st Query)
--Deposit? = ("Y" or "N") (2nd Query)
--score = "Score" (1st Query)
--risk_rating = "Rating" (1st Query)
--reason_code = "Reason Code" (1st Query)
"立即想到了一个搜索,但是在这种情况下这不起作用,因为subsearch返回了太多字段。
尝试使用stats
组合两个搜索。这样的东西:
index=mbank_p_database sourcetype=mbank_event (EventTypeID=1095 OR EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012)
| stats values(*) as * by OLBUserID
| table _time, SessionID, EventTypeID, OLBUserID, score, risk_rating, reason_code
我最终必须更改搜索的工作方式。首先,您必须仅搜索所有具有" EventTypeid = 1095"的项目。然后获取这些结果,然后将它们添加到子搜索中。我添加了空白字段,以便用户可以将其直接导出到电子表格进行研究。
最终SPL:
index=mbank_p_database sourcetype=mbank_event EventTypeID=1095
| dedup OLBUserID
| join type=left SessionID
[ search index=mbank_p_database sourcetype=mbank_event EventTypeID=1000 OR EventTypeID=1011 OR EventTypeID=1012]
| eval "Deposit?"=case(Amount<=0.0000, "N", Amount>0.0000, "Y")
| table _time, SessionID, UDID, OLBUserID, "Deposit?", Amount, "Bank#", "Acct Type", "Acct#", "Fraud?", "Comments", score, risk_rating, reason_code
| sort -_time