我們從最簡單的概念講起
elasticsearch中查詢語句叫dsl(domain specific language)
查詢語句由兩種型別子句組成
查詢子句的不同取決於他們是在查詢子句上下文中使用還是在過濾子句上下文中使用。
查詢上下文與過濾上下文的區別是
查詢上下文指的是文件中是否存在匹配查詢子句的內容,並計算得分。
過濾上下文指的是匹配到的內容是否滿足過濾條件,例如時間是否大於2020-07-19
或者狀態是否等於1之類的
以下查詢示例滿足如下條件
get
/_search},
//復合查詢匹配條件1
}//復合查詢匹配條件2],
"filter":[
//過濾上下文子句},
//過濾條件,精確匹配}}
//過濾條件範圍匹配]}
}}
從示例可以看出,過濾上下問子句包含在查詢上下文子句中,也就是說只有,有查詢才有過濾的必要。復合查詢,只影響得分。
自己的示例演示如下
get _search?filter_path=*.
*._score},
}]}}
}
結果如下,我將內容使用filter_path
進行過濾,可以看出來匹配程度最高的是第乙個。
,]
}}
match_all
get _search?filter_path=*.
*._score
}}
match_all匹配所有文件得分為1,通過boost
可以改變得分,如上示例輸出如下
,]
}}
全文查詢
全文查詢可以分文以下型別
match query
用於執行全文查詢的標準查詢,包括模糊匹配和短語或鄰近查詢
match_phrase query
與match查詢類似,但用於匹配確切的短語或單詞接近度匹配。
match_phrase_prefix query
與match_phrase
查詢類似但是最右乙個單詞模糊如 i am a chin*
multi_match query
match
查詢的多字段版本。
common_terms query
一種更專業化的查詢,它對不常見的詞有更多的偏好。
query_string query
支援compact lucene查詢字串語法,允許您在單個查詢字串中指定and | or | not條件和多字段搜尋。這也是我們最常用的查詢子句
******_query_string
查詢字串語法的乙個更簡單、更健壯的版本,適合直接向使用者公開。
ElasticSearch 翻頁查詢
相對於ealsticsearch的search api,翻頁查詢可以將查詢結果集分頁返回,而不是將所有的結果放在乙個page返回。如果查詢的結果集包含大量的資料,就可以用到翻頁查詢 scroll api,比如有200k條資料,可以將它們分成20次請求,每次只返回10k條查詢結果.有點類似於資料庫裡面...
ElasticSearch 查詢語法
author title publish date form指定從 返回 size指定返回數量 from 1 size 1 sort group by publish date 特定字段查詢所指特定值 query context 會根據匹配程度生成不同的匹配分數 全文本查詢針對文字型別 字段級別查詢...
elasticsearch高亮查詢
pageinfo elasticsearchtemplate.queryforpage query,article.class 帶條件的分頁查詢 test public void testselectpagebyid 建立querybuilder查詢條件 querybuilder querybuil...