本文基于Elasticsearch 6.1 版本學(xué)習(xí)
Request Body Search
-
將查詢語句通過 http request body 發(fā)送到es, 主要包含如下參數(shù):
? - ...
? - query 符合Query DSL 語法查詢語句
? - from,size
? - timeout
? - sort
圖-1 -
Query DSL
基于json定義的查詢語言,主要包含如下兩種類型:
? - 字段類查詢: 如term,match,range等,只針對某一個字段進(jìn)行查詢。?
? - 復(fù)合查詢: 如bool查詢等, 包含一個或多個字段類查詢或符合查詢語句。 - 字段類查詢主要包括以下兩類:
? - 全文匹配: 針對text類型的字段進(jìn)行全文檢索,會對查詢語句先進(jìn)行分詞處理,如match,match_pharse,等query類型。
? - 單詞匹配:不會對查詢語句做分詞處理,直接去匹配字段的倒排索引,如term,terms,range等query類型 -
match Query
對字段作全文檢索,最基本和常用的查詢類型,API示例如下:match query返回結(jié)果match query查詢流程
? - 通過operator參數(shù)可以控制單詞間的匹配關(guān)系,可選項為or 和 and以上 operator 為 and,即必須同時包含 alfred 和 way 才滿足。operator
? - 通過 minimum_should_match 參數(shù)可以控制需要匹配的單次數(shù)minimum_should_match -
Match phrase Query
對字段作檢索,有順序要求,API示例如下:Match phrase Query響應(yīng)
? - 通過 slop 參數(shù)可以控制單詞間的間隔slop -
Query String Query
類似于URI Search 中的 q 參數(shù)查詢以上查詢是指查詢username字段同時包含alfred和way字段的文檔。Query String Query以上查詢是指查詢username和job字段包含alfred或者同時包含java和ruby的文檔Query String Query -
Simple Query String Query
類似 Query String ,但是會忽略錯誤的查詢語法,并且僅支持部分查詢語法,器常用的邏輯符號如下,不能使用AND,OR,NOT 等關(guān)鍵詞
? +:代指 AND
? | :代指 OR
? - :代指 NOT
Simple Query String Query -
Term Query
將查詢語句作為整個單詞進(jìn)行查詢,即不對查詢語句做分詞處理,如下圖所示:查詢username字段包含alfred的所有文檔Term Query -
Terms Query
一次傳入多個單詞進(jìn)行查詢,如下圖所示:Terms Query -
Range Query
范圍查詢主要針對數(shù)值和日期類型,如下所示:針對日期做查詢?nèi)缦拢?div id="u0z1t8os" class="image-package">Range Query日期查詢





























