聯(lián)合實(shí)驗(yàn)室 網(wǎng)站建設(shè)方案seo網(wǎng)站地圖
kinana是一個(gè)功能強(qiáng)大、可對Elasticsearch數(shù)據(jù)進(jìn)行可視化的開源工具。
我們在dashboard創(chuàng)建可視化時(shí),有時(shí)需要將某個(gè)index里數(shù)據(jù)的某個(gè)字段根據(jù)是否包含某些特定關(guān)鍵詞進(jìn)行過濾,這個(gè)時(shí)候就可以用到lens里的filter功能很方便地進(jìn)行操作。
如上圖所示,一個(gè)名為 formatted-logs的index數(shù)據(jù)用于檢索,我選擇了三個(gè)字段構(gòu)成圖中的表格,分別是 hostname, abstract 和 log.keyword。
需求一:
將 log.keyword 字段中包含 “No. of IPv6 Unicast prefixes received from” 字符串的行數(shù)篩選出來。
操作:
點(diǎn)擊 “添加篩選”,選擇 log.keyword 字段,在運(yùn)算符處選擇 “是”,然后在“值”一欄填入“No. of IPv6 Unicast prefixes received from *”,因?yàn)槲覀兪且ヅ浒匙址淖侄蝺?nèi)容而不是精確查找,填寫完成后點(diǎn)擊“保存”,然后會(huì)發(fā)現(xiàn)一個(gè)問題,就是找不到結(jié)果。
這個(gè)時(shí)候再點(diǎn)擊剛剛創(chuàng)建的filter標(biāo)簽,點(diǎn)擊“編輯篩選”。
點(diǎn)擊“編輯為查詢DSL”,DSL是ES提供的一種靈活的、基于 JSON 的查詢語言。
這個(gè)時(shí)候可以看到實(shí)際用來查詢的DSL,可以發(fā)現(xiàn)用到的檢索是精確匹配,用的是“match_phrase”, 我們希望能夠用*進(jìn)行模糊匹配,所以要把檢索方式換成“wildcard”
將精確匹配的“match_phrase”換成支持模糊匹配的“wildcard”,然后再點(diǎn)擊“保存”
保存之后,就可以看到所有選擇的時(shí)間范圍內(nèi)包含?“No. of IPv6 Unicast prefixes received from *” 字符串的日志數(shù)據(jù)了。
需求二:
將 log.keyword 字段中包含 “No. of IPv6 Unicast prefixes received from” 字符串的日志數(shù)據(jù)過濾掉。
操作:
將包含某指定字符串的數(shù)據(jù)行過濾掉不顯示在表格內(nèi)容中,其實(shí)就是在實(shí)現(xiàn)需求一所用到的ES查詢DSL中進(jìn)行反向操作。
這個(gè)時(shí)候可以使用 bool
查詢中的 must_not
子句。must_not
子句用于排除與特定條件匹配的字段所在行數(shù)據(jù)(謝謝ChatGPT的傾情解答)。
那么將DSL調(diào)整為如下即可:
這個(gè)時(shí)候再更新檢索結(jié)果,就可以看到log.keyword 字段中不包含 “No. of IPv6 Unicast prefixes received from” 字符串的日志數(shù)據(jù)。
最后的溫馨tips:?DSL 可以使用AI工具幫忙生成!!再次感謝ChatGPT。