{ "query":{ "match_all":{} } }
{ "query":{ "match":{ "title":"入門到精通" } }, "from":1, "size":5, "sort":{ "publish_date":{ "order":"asc" } } }
{ "aggs":{ "group_by_word_count":{ "terms":{ "field":"word_count" } }, "group_by_publish_date":{ "terms":{ "field":"publish_date" } } } }
{ "aggs":{ "total_word_count":{ "stats":{ "field":"word_count" } } } }
{ "aggs":{ "max_word_count":{ "max":{ "field":"word_count" } } } }
1.子條件查詢 又稱葉子條件查詢(特定字段查詢所指特定的值)ide
- 1.1Query Context
在查詢的過程當中,除了判斷文檔是否知足查詢條件外,ES還會計算一個_score來標識匹配的程度,旨在判斷目標文檔和查詢條件的匹配程度有多好。
{ "query":{ "match":{ "title":"PHP從入門到精通" } } }
會匹配PHP、從入門到精通兩個關鍵詞code
{ "query":{ "match_phrase":{ "title":"PHP從入門到精通" } } }
{ "query":{ "multi_match":{ "query":"PHP", "fields":["title","author"] } } }
查詢title或author中包含PHP關鍵字文檔
{ "query":{ "query_string":{ "query":"(PHP AND 入門) OR 普改" } } }
文本字段同時包含PHP和入門兩個關鍵詞或者文本字段包含普改get
{ "query":{ "query_string":{ "query":"PHP", "fields":["title","author"] } } }
- 1.1.2字段級別查詢:針對結構化數據,如數字、日期等
{ "query":{ "term":{ "author":"普改" } } }
{ "query":{ "range":{ "word_count":{ "gte":"170000", "lte":"200000" } } } }
{ "query":{ "range":{ "publish_date":{ "gte":"2018-01-01", "lte":"2019-12-30" } } } }
{ "query":{ "range":{ "publish_date":{ "gte":"2019-01-01", "lte":"now" } } } }
1.2Filter Context
在查詢過程當中,只判斷該文檔是否知足條件,只有yes或者no.
(query判斷yes或者no,還會_score匹配程度)string
ES會對查詢結果作緩存,故速度比Query要快it
{ "query":{ "bool":{ "filter":{ "term":{ "author":"普改" } } } } }
2.複合條件查詢(以必定的邏輯組合子查詢查詢)入門
{ "query":{ "bool":{ "must":{ "match":{ "title":"PHP從入門到精通" } }, "filter":{ "range":{ "word_count":{ "gt":170000 } } } } }, "from":1, "size":1 }