Elasticsearch查詢字串語法教程

2021-10-19 10:04:35 字數 2112 閱讀 9746

根據查詢字串進行查詢,elasticsearch使用嚴格語法進行解析。查詢字串基於操作符(如and,or)對提供的查詢字串進行分割、解析,接著對每乙個分割文字進行分析,最後組合作為條件進行查詢。

可以使用query_string查詢建立複雜查詢,包括萬用字元字元,跨多個字段查詢等。功能非常強大,但如果提供的語法無效會返回錯誤。

query_string示例如下:

get /_search

}}

下面介紹常用的語法。

status包含"active"單詞:

statu­s:a­ctive
title字段包括"­qui­ck" 或 「­bro­wn」。如果你忽略or操作符,則使用預設操作。預設操作即或操作。

title­:(quick or brown)

title­:(quick brown)

title­:(quick and brown)

author字段包含完整片語"john smith":

autho­r:"john smith"
三個字段 「­boo­k.t­itl­e」, 「­boo­k.c­ont­ent­」 , 「­boo­k.d­ate­」 中任何乙個包括 quick 或 brown (注意這裡*號可能需要轉義符\):

book.­*:­(quick brown)
查詢 「­tit­le」 字段缺失值的文件 (或沒有該欄位):

_miss­ing­_:t­itle
查詢 「­tit­le」 字段沒有空值的文件:

_exis­ts_­:title
模糊查詢可用於單個片語,使用?表示單個字元,*表示零個或多個字元:

qu?ck bro*
注意:模糊查詢需要使用大量記憶體,執行效率低。

可以在查詢字串中嵌入正規表示式,需要使用 ("/")包裹表示式:

name:­/jo­h?n­(at­h[o­a]n)/
多個單詞或子句可以使用圓括號進行分組形成子查詢:

(quick or brown) and fox
分組可用於特定字段,或提公升子查詢的評分:

statu­s:(­active or pending) title:­(full text search)^2
可以對date, numeric 或 string 字段進行範圍查詢。

包括邊界使用方括號:[min to max] ,排除邊界使用花括號:.

查詢 2023年所有填:

date:­[20­12-­01-01 to 2012-1­2-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...