使用KIBANA查詢(xún)ES中的數(shù)據(jù)
在搜索時(shí),一定要選擇合理的時(shí)間范圍罩息,這個(gè)時(shí)間范圍是基于創(chuàng)建索引模式時(shí)選擇的時(shí)間字段拼缝。比如@timestamp
。
另外一個(gè)小提示:默認(rèn)情況下了嚎,搜索結(jié)果列表的上方會(huì)顯示一個(gè)柱狀圖泪漂。可以點(diǎn)擊左下角的小箭頭歪泳,查看其他的信息萝勤,比如搜索結(jié)果對(duì)應(yīng)的ES請(qǐng)求主體等。
Elasticsearch查詢(xún)語(yǔ)句語(yǔ)法
查詢(xún)語(yǔ)句包含一系列詞語(yǔ)(term
)和操作符呐伞。一個(gè)詞語(yǔ)可以是一個(gè)單詞敌卓,比如INFO
。
也可以是雙引號(hào)包圍的一個(gè)短語(yǔ)荸哟,比如"INFO make"
假哎,這種情況下會(huì)搜索這整個(gè)短語(yǔ),按照單詞在短語(yǔ)中的順序鞍历。
指定字段名稱(chēng)
默認(rèn)情況下,會(huì)在所有字段中匹配要搜索的詞語(yǔ)肪虎×涌常或者我們也可以指定要搜索的字段。比如以下查詢(xún):
- 查詢(xún)
message
字段中包含INFO
單詞的記錄:message:INFO
- 查詢(xún)
message
字段中包含INFO make
短語(yǔ)的記錄:message:"INFO make"
扇救。
在這個(gè)例子中刑枝,如果搜索message:"make INFO"
就會(huì)提示未找到結(jié)果
,因?yàn)?code>message字段并不包含make INFO
這個(gè)短語(yǔ)迅腔。(稍微注意搜索欄的輸入內(nèi)容和ES查詢(xún)請(qǐng)求中語(yǔ)句的差別) - 查詢(xún)
message
字段中包含test
或inform
的記錄:message:(test OR inform)
装畅。
如果省掉了OR
,也就是message:(test inform)
沧烈,則使用設(shè)置的default_operator
的值(其默認(rèn)值為OR
)掠兄。 - 查詢(xún)所有
mes
開(kāi)頭的字段中包含trust
的記錄:mes\*:trust
。*
通配符前需要加反斜杠\
。
這里有一個(gè)問(wèn)題蚂夕,搜索kafka.\*:trsutlog
會(huì)報(bào)錯(cuò)迅诬,因?yàn)檫@里匹配的字段的數(shù)據(jù)類(lèi)型,有字符串類(lèi)型婿牍,數(shù)值類(lèi)型侈贷,和未知類(lèi)型。對(duì)于數(shù)值類(lèi)型的字段等脂,我們只能使用數(shù)字來(lái)搜索俏蛮,使用字母等就會(huì)報(bào)錯(cuò)。所以kafka.\*:17432195
就有結(jié)果了上遥。
再比如嫁蛇,當(dāng)我們嘗試查詢(xún)beat.\*:5.1.2
時(shí)就成功了,因?yàn)槠ヅ涞?code>beat.hostname和beat.version
字段都是字符串類(lèi)型的露该。 - 查詢(xún)
message
字段值非空的記錄:_exists_:message
睬棚。
使用通配符
通配符搜索適用于單個(gè)單詞中,使用解幼?
替換單個(gè)字符抑党,*
替換零個(gè)或多個(gè)字符。比如:tags:trust* OR tes?
的查詢(xún)結(jié)果如下撵摆。注意這個(gè)查詢(xún)中的tes?
是用于匹配所有字段的內(nèi)容底靠。如果要限定tags
字段,則應(yīng)該查詢(xún)tags:(trust* OR tes?)
特铝。
另外暑中,使用通配符查詢(xún)是很占用內(nèi)存的。
正則表達(dá)式
比如查詢(xún)tags:/trust*/
鲫剿。具體正則表達(dá)式語(yǔ)法參考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax鳄逾。
模糊操作符
可以搜索相似的詞語(yǔ),比如trsut~
灵莲,同樣會(huì)匹配trust
雕凹。
取值范圍
范圍可以是日期,數(shù)值政冻,或者字符串字段的范圍枚抵。閉區(qū)間:[min TO max]
;開(kāi)區(qū)間:{min TO max}
;也可以結(jié)合在一起:[min TO max}
。
- 日期:
date:[2012-01-01 TO 2012-12-31]
- 數(shù)值:
count:[1 TO 5]
- 字符串:
tag:{alpha TO omega}
- 不指定最小值或最大值:
-
count:[10 TO *]
明场,也可以寫(xiě)成count:>=10
-
date:{* TO 2012-12-31}
: date在2012-12-31之前(這個(gè)我測(cè)試了汽摹,查不到預(yù)想的結(jié)果)
-
Boolean操作符
比如ERROR WARNING +INFO -DEBUG
:
-
WARNING
和ERROR
可選,只是提高了相關(guān)性苦锨。 -
+INFO
表示一定要包含INFO
單詞逼泣。 -
-DEBUG
表示一定不能包含DEBUG
單詞趴泌。
如果使用AND
,OR
和NOT
操作符(也寫(xiě)作&&
圾旨,||
踱讨,!
),則可以轉(zhuǎn)化成:
WARNING OR ERROR AND INFO AND NOT DEBUG
- 不正確的轉(zhuǎn)化:
(WARNING OR ERROR) AND INFO AND NOT DEBUG
砍的。這種情況下痹筛,必須至少匹配WARNING
和ERROR
中一個(gè)。
保留字符
如果要匹配保留字符廓鞠,則需要在字符前加反斜杠\
帚稠。保留字符包括: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
。比如:要搜索(1+1)=2
床佳,則使用語(yǔ)句\(1\+1\)\=2
滋早。
不過(guò),<
和>
是無(wú)法轉(zhuǎn)義的砌们,它們總是會(huì)創(chuàng)建一個(gè)范圍查詢(xún)杆麸。
參考鏈接
星期六, 26. 八月 2017 05:58下午