查詢經常使用的關鍵字以下:spa
term:精確匹配,不會對查詢詞進行分析。下面的示例返回message="loadUserByUsername error"的文檔。code
GET xxx/_search { "query": { "term": { "message.keyword": { "value": "loadUserByUsername error" } } } }
match:首先會對查詢詞進行分析,而後再匹配。下面的示例返回message中含有"filter" 或者 "error"的全部文檔。blog
GET xxx/_search { "query": { "match": { "message": "filter error" } } }
match_phrase:被查詢詞做爲一個短語,不會將查詢短語拆開。下面的示例返回message="filter error"的文檔。排序
GET xxx/_search { "query": { "match_phrase": { "message": "filter error" } } }
match_phrase_prefix:查詢短語前綴匹配,它與match_phrase的區別在於,它能夠匹配"查詢短語+其它內容"的內容。文檔
GET xxx/_search { "query": { "match_phrase_prefix": { "message": "loadUser" } }, "_source": ["message", "@timestamp"], "from": 0 }
bool:結合其它真值查詢,一般和must\should\must_not(與或非)一塊兒組合出複雜的查詢。it
must:與的關係,表示必須同時知足must下的全部條件。ast
GET xxx/_search { "query": { "bool": { "must": [ { "match": { "message": "eureka" } }, { "match": { "message": "via" } } ] } } }
should:或的關係,表示知足should下的任意一個條件便可。class
GET xxx/_search { "query": { "bool": { "should": [ { "match": { "message": "filter" } }, { "match": { "message": "error" } } ] } } }
must_not:非的關係,表示必須同時不知足must_not下的全部條件才行。效率
GET xxx/_search { "query": { "bool": { "must_not": [ { "match": { "message": "filter" } }, { "match": { "message": "error" } } ] } } }
GET xxx/_search { "query": { "match": { "message": "error" } }, "sort": [ { "@timestamp": { "order": "desc" } } ] }
指定查詢結果中展現的字段。 "_source": ["a", "b"]搜索
GET xxx/_search { "query": { "match": { "message": "error" } }, "sort": [ { "@timestamp": { "order": "desc" } } ], "_source": ["message", "@timestamp"] }
指定檢索結果輸出的條數,不設定時默認爲10。 "size": 20
GET xxx/_search { "query": { "match": { "message": "error" } }, "_source": ["message", "@timestamp"], "size": 20 }
以必定的偏移量來檢索咱們的數據,缺省時默認爲0(從檢索的第一條數據開始)。"from": 10
GET xxx/_search { "query": { "match": { "message": "error" } }, "_source": ["message", "@timestamp"], "from": 100 }
不須要計算相關度分數,搜索效率高。
range:範圍查詢,經過必定範圍的值來過濾文檔。
GET xxx/_search { "query": { "bool": { "filter": { "range": { "@timestamp": { "gte": "2019-09-11T05:20:36.622Z", "lte": "2019-09-11T05:24:36.622Z" } } } } } }
exists:匹配那些指定字段中至少包含一個非null值的文檔。 Returns documents that have at least one non-null
value in the original field。
GET xxx/_search { "query": { "bool": { "filter": { "exists": { "field": "@timestamp" } } } } }