天天看點

Elasticsearch——Rest API中的常用用法

本篇翻譯的是Elasticsearch官方文檔中的一些技巧,是使用Elasticsearch必不可少的必備知識,并且适用于所有的Rest Api。

當在Rest請求後面添加<code>?pretty</code>時,結果會以Json格式化的方式顯示。另外,如果添加<code>?format=yaml</code>結果會以樹的形式顯示,預設都是Flase.

Elasticsearch——Rest API中的常用用法

結尾添加<code>?human=true</code>,傳回的資料會有很好的可讀性,比如:

time:3600 會顯示為 time:1h

size:1024 會顯示為 1kb

在Elasticsearch中日期數學表達式是很常用的,在查詢中經常會通過它來作為檢索條件,比如range或者daterange。表達式通常會有下面幾種操作:

+1h ,表示加上一個一個小時

-1d,表示減去一天

/d,表示向一天取整

支援的機關也很多,比如

y,代表一年

M,代表一個月

w,代表一周

d,代表一天

h,代表一個小時

m,代表一分鐘

s,代表一秒鐘

ms,代表毫秒

舉個例子:

now+1h,表示目前時間加上一個小時,即一個小時後

now+1h+1m,表示目前時間加上一個小時零一分鐘,即一個小時一分鐘後

now+1h/d,表示目前時間加上一個小時,并向一天取整。

2015-01-01||+1M/d,2015-01-01加上一個月,并向一天取整

有時候我們可能并不想傳回所有的資料,因為這樣會浪費一定的空間和時間,是以需要對查詢傳回的結果進行過濾。所有的API都接受一個參數——filter_path,這個參數支援逗号分隔,可以同時填寫多個值。

例如,如果隻想要傳回查詢的時間、事件的id和分值,可以像下面這樣:

也支援*來忽略對某個字段的過濾:

使用**則會忽略最大長度的路徑,與Spring MVC的Url比對差不多。

注意,elasticsearch一般會直接傳回一條資料的原始資訊,即_source字段。如果要對_source進行過濾,可以參考下面的用法:

設定flat_settings 為true,會以扁平化的方式傳回資料:

在Elastcisearch的使用中,往往要接觸到各種資料類型。如果某個字段設定了固定的類型,那麼當執行查詢或者索引時,一些資料會發生自動的類型轉換。

在Es中,false、no、0、off這些值都代表false,其他的值都是true.

所有的API都支援以字元串的方式代表JSON中的數字類型。

支援的類型上面都說過了...

有的時候一些需要允許一定的模糊度,比如檢索hallo可以查詢到hello,這就要支援模糊查詢。模糊查詢可以使用fuzziness參數,它有點像range:

并且可以設定一定的模糊度,比如:

AUTO,如果設定Auto,那麼會根據字元串的長度而改變

比如,長度為:

<code>0..2</code>,必須完全比對

<code>3..5</code>,可以有一個編輯距離的模糊度

<code>&gt;5</code>,可以有兩個編輯距離的模糊度

所有的API都接受一個case參數,如果設定為camelCase,那麼所有的名稱都會以駝峰式的形式傳回。

除了POST請求外,其他的請求時沒有請求體的。這個時候如果要執行查詢,可以把參數放在Url後面。

繼續閱讀