第七天了!!
我還以為已經過了半個月的說~
在第五天的時候我稍微地提到了Query DSL的功能,
有時候預設功能可能不夠滿足我們的需求就需要另外下Query來處理,
所以我們就來介紹一下基本的處理方式吧!
exists query
從字面上的意思就是有存在的,甚麼意思呢?
這是用來找出一段log是否包含我們所指定的field,
比如說我今天找user,
log內容中含有user這個field的才會被篩選出來。
這部分我們可以應用在在同一個index中,
取出某一種log,
像是Security log、Traffic log等等,
又或是說我今天重點就是對應到人的使用行為,
所以我只挑出包含使用者資訊field的log
{
"query": {
"exists": {
"field": "[field名稱]"
}
}
}
fuzzy query
-這應該很不陌生,就是模糊查詢法~
一般我們在查找資料如果搜尋Jim,
就只會出現跟Jim完全相同內容的結果,
但模糊查詢會做一些變化:
1.將Jim這三個單字拆解找到Tim或是Jin
2.將clock這個單字進行刪除找到lock
3.在lower這個單字加入新的字母找到flower
4.對star做相鄰字元的位置調換找到tsar
{
"query": {
"fuzzy": {
"[field]": {
"value": "[要搜尋的內容]"
}
}
}
}
ids query
在elasticsearch中,
每一筆log系統都會自動給予一個id也就是流水號,
這個下法就是為了當今天我們搜尋關鍵字時,
如果在同一條log中出現了多次關鍵字,
這會導致我們在做某些資料抓取的時候會重複抓取同一個log,
這個時候我們就可以將含有關鍵字的log id取出來,
最後在針對有取出來的id進行log的抓取就可以避免抓到重複的數據了!
{
"query": {
"ids" : {
"values" : ["1", "4", "100"]
}
}
}