查詢可以變得非常的複雜,尤其
和不同的分析器與不同的字段對映結合時,理解起來就有點困難了。不過validate-query
api 可以用來驗證查詢是否合法。/gb
/tweet
/_validate
/query}}
以上validate
請求的應答告訴我們這個查詢是不合法的:
"valid"
:false
,"_shards":}
為了找出
查詢不合法的原因,可以將explain
引數 加到查詢字串中:/gb
/tweet
/_validate
/query
?explain }}
explain
引數可以提供更多關於查詢不合法的資訊。
很明顯,我們將查詢型別(match
)與欄位名稱 (tweet
)搞混了:
"valid"
:false
,"_shards":,
"explanations":[
]}對於合法查詢,使用explain
引數將返回可讀的描述,這對準確理解 elasticsearch 是如何解析你的 query 是非常有用的:
/_validate
/query
?explain}}
我們查詢的每乙個 index
都會返回對應的explanation
,因為每乙個 index 都有自己的對映和分析器:
"valid"
:true
,"_shards":,
"explanations":[
,]}從explanation
中可以看出,匹配really powerful
的match
查詢被重寫為兩個針對tweet
欄位的 single-term 查詢,乙個single-term查詢對應查詢字串分出來的乙個term。
當然,對於索引us
,這兩個 term 分別是really
和powerful
,而對於索引gb
,term 則分別是realli
和power
。之所以出現這個情況,是由於我們將索引gb
中tweet
欄位的分析器修改為english
分析器。
請求體查詢 查詢與過濾
elasticsearch 使用的查詢語言 dsl 擁有一套查詢元件,這些元件可以以無限組合的方式進行搭配。這套元件可以在以下兩種情況下使用 過濾情況 filtering context 和查詢情況 query context 當使用於 過濾情況 時,查詢被設定成乙個 不評分 或者 過濾 查詢。即,...
請求體查詢 最重要的查詢
雖然 elasticsearch 自帶了很多的查詢,但經常用到的也就那麼幾個。我們將在 深入搜尋 章節詳細討論那些查詢的細節,接下來我們對最重要的幾個查詢進行簡單介紹。match all查詢 match all查詢簡單的 匹配所有文件。在沒有指定查詢方式時,它是預設的查詢 match all 它經常...
ES 學習3 請求體查詢
1.空查詢 get index 2014 type1,type2 search get search 2.查詢表示式 dsl只需將查詢語句傳遞給query引數 get search 查詢全部 match all 跟空查詢等價 get search 針對某個字段,結構 get search 3.查詢與...