elasticsearch 查詢語法驗證

2021-07-26 23:11:31 字數 1298 閱讀 6581

查詢可以變得非常的複雜,尤其和不同的分析器與不同的字段對映結合時,理解起來就有點困難了。不過validate-queryapi 可以用來驗證查詢是否合法。

get

/gb/tweet/_validate/query

}}

以上validate請求的應答告訴我們這個查詢是不合法的:

}

理解錯誤資訊

為了找出 查詢不合法的原因,可以將explain引數 加到查詢字串中:

get

/gb/tweet/_validate/query?

explain (1)

}}

explain引數可以提供更多關於查詢不合法的資訊。

很明顯,我們將查詢型別(match)與欄位名稱 (tweet)搞混了:

,

"explanations"

: [ ]

}

理解查詢語句

對於合法查詢,使用explain引數將返回可讀的描述,這對準確理解 elasticsearch 是如何解析你的 query 是非常有用的:

get

/_validate/query?explain

}}

我們查詢的每乙個 index 都會返回對應的explanation,因為每乙個 index 都有自己的對映和分析器:

,

"explanations"

: [ , ]

}

explanation中可以看出,匹配really powerfulmatch查詢被重寫為兩個針對tweet欄位的 single-term 查詢,乙個single-term查詢對應查詢字串分出來的乙個term。

當然,對於索引us,這兩個 term 分別是reallypowerful,而對於索引gb,term 則分別是reallipower。之所以出現這個情況,是由於我們將索引gbtweet欄位的分析器修改為english分析器。

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...