天天看點

Kibana(七):如何在位址中查詢中文關鍵字

對于輕量級搜尋,具有簡單快捷且能跨索引的優點,并且特别适用于資料調試與診斷,以Kibana中的調試工具(Dev Tools)為例,如下:

即可輕松擷取到在tweet類型中tweet字段包含yiifaa 單詞的所有文檔。

URL位址的方式對于ASCII碼一般不存在什麼問題,但如果是中文,怎麼辦?如我要查詢到在tweet類型中 tweet字段包含“蟻蚄” 單詞的所有文檔,直接以下面的寫法,毫無疑問将檢索不到任何資料:

解決辦法是将中文采用Unicode轉義,将蟻蚄轉義為“\u8681\u8684”,現在查詢語句如下:

GET /_all/tweet/_search?q=tweet:\u8681\u8684
           

需要注意的是,以上執行語句隻能在Kibana的調試工具(Dev Tools)裡才能執行成功,如果要采用curl工具,那麼還需要進行一次URL編碼,如下:

# 千萬不要把q後面的=轉義為%2d,否則es無法識别參數
curl -XGET http://localhost://_all/tweet/_search?q=name%a%e7%e%b
           

再強調一次,URL轉義隻能針對“q=”之後的字元,否則一定會出現以下錯誤:

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"request [/_search] contains unrecognized parameter: [q=tweet:蟻蚄]"}],"type":"illegal_argument_exception","reason":"request [/_search] contains unrecognized parameter: [q=tweet:蟻蚄]"},"status":}
           

另外,推薦一個線上字元轉義的網址。

結論

查詢字元串具有簡潔高效的特點,對于通過指令做一次性查詢,或者是在開發階段,都非常友善,但因為URL編碼的原因,讓字元串了解起來較為晦澀,但利用字元轉義工具,可以降低這種困難。

繼續閱讀