根據查詢字串進行查詢,elasticsearch使用嚴格語法進行解析。查詢字串基於操作符(如and,or)對提供的查詢字串進行分割、解析,接著對每乙個分割文字進行分析,最後組合作為條件進行查詢。
可以使用query_string
查詢建立複雜查詢,包括萬用字元字元,跨多個字段查詢等。功能非常強大,但如果提供的語法無效會返回錯誤。
query_string
示例如下:
get /_search
}}
下面介紹常用的語法。
status
包含"active"單詞:
status:active
title
字段包括"quick" 或 「brown」。如果你忽略or操作符,則使用預設操作。預設操作即或操作。
title:(quick or brown)
title:(quick brown)
title:(quick and brown)
author
字段包含完整片語"john smith":
author:"john smith"
三個字段 「book.title」, 「book.content」 , 「book.date」 中任何乙個包括 quick 或 brown (注意這裡*號可能需要轉義符\
):
book.*:(quick brown)
查詢 「title」 字段缺失值的文件 (或沒有該欄位):
_missing_:title
查詢 「title」 字段沒有空值的文件:
_exists_:title
模糊查詢可用於單個片語,使用?
表示單個字元,*
表示零個或多個字元:
qu?ck bro*
注意:模糊查詢需要使用大量記憶體,執行效率低。
可以在查詢字串中嵌入正規表示式,需要使用 ("/")包裹表示式:
name:/joh?n(ath[oa]n)/
多個單詞或子句可以使用圓括號進行分組形成子查詢:
(quick or brown) and fox
分組可用於特定字段,或提公升子查詢的評分:
status:(active or pending) title:(full text search)^2
可以對date, numeric 或 string 字段進行範圍查詢。
包括邊界使用方括號:[min to max] ,排除邊界使用花括號:.
查詢 2023年所有填:
date:[2012-01-01 to 2012-12-31]
查詢數值 1…5
count:[1 to 5]
查詢alpha 和 omega之間的tag,不包括兩者:
tag:
查詢10以上的範圍:
count:[10 to *]
查詢2023年之前的日期:
date:
查詢1到5,但不包括5:
count:[1 to 5}
quick brown +fox -news
簡單查詢字串的語法是查詢字串的限制版本,且對於無效語法不返回錯誤資訊,它忽略查詢字串中無效部分。
示例:
get /_search
}}
詳細語法可參考官方文件。
利用查詢字串可以建立強大的高階查詢,但語法較為複雜,如果不需要支援查詢語法,可以考慮使用match查詢。如果需要查詢語法的特性,可以使用******_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...