查詢(xún)樣例
{"query": {
"bool": {
"must": [{
"query_string": {
"default_field": "s_attack_type",
"query": " *XXX* "
}
}],
"should": [],
"must_not": [],
"filter": [{
"range": {
"l_last_ts": {
"gte": 1579086000000,
"lt": 1579172400000
}
}
}, {
"term": {
"s_appId": "5308e20b"
}
}, {
"term": {
"s_app_type": "ios"
}
}, {
"exists": {
"field": "s_attack_type"
}
}]
}
}
}
這條語(yǔ)句代表這利用Kibana從ES中查詢(xún)搬俊,查詢(xún)條件以 query標(biāo)簽開(kāi)始巷疼,以bool查詢(xún)形式插入條件奶浦,其中可以插入條件
must , must_not , should , should_not , filter等科汗,must , must_not , should , should_not , 這些是查詢(xún)條件是以單獨(dú)一條的形式存在的佛南,就是說(shuō),如果使用彭谁,must吸奴,則must這個(gè)語(yǔ)句塊總只放一個(gè)單獨(dú)的條件,在filter中缠局,這個(gè)語(yǔ)句塊中可以放多個(gè)條件,如 range ,
term 考润, exists等狭园,range 表示用來(lái)查詢(xún)時(shí)間區(qū)間內(nèi)的數(shù)據(jù),一個(gè)term相當(dāng)于一個(gè)條件查詢(xún)糊治,多個(gè)term 則是相當(dāng)于 條件 and 條件
exists則是代表唱矛,ES索引中必須存在這個(gè)key。
上述語(yǔ)句相當(dāng)于下列 java 代碼:
QueryBuilder queryBuilder = QueryBuilders.boolQuery().
filter(QueryBuilders.rangeQuery(EsQueryConstant.L_LAST_TS).gte(1579086000000).lt(1579172400000)).
filter(QueryBuilders.termQuery("s_appId", appId)).
filter(QueryBuilders.termQuery("s_app_type", "ios")).
filter(QueryBuilders.existQuery("s_attack_type")).
must(QueryBuilders.stringQuery("s_attack_type", "*" + "XXX" + "*"));
ES的查詢(xún)語(yǔ)句必須滿(mǎn)足JSON格式
其余的如 agg 等內(nèi)容井辜,下次再寫(xiě)吧