取回多個文件

2021-08-15 13:07:37 字數 1361 閱讀 7559

elasticsearch 的速度已經很快了,但甚至能更快。

將多個請求合併成乙個,避免單獨處理每個請求花費的網路延時和開銷。 如果你需要從 elasticsearch 檢索很多文件,那麼使用 multi-get

或者mgetapi 來將這些檢索請求放在乙個請求中,將比逐個文件請求更快地檢索到全部文件。

mgetapi 要求有乙個docs陣列作為引數,每個

元素包含需要檢索文件的元資料, 包括_index_type_id。如果你想檢索乙個或者多個特定的字段,那麼你可以通過_source引數來指定這些欄位的名字:

/_mget,]

}

該響應體也包含乙個docs陣列

, 對於每乙個在請求中指定的文件,這個陣列中都包含有乙個對應的響應,且順序與請求中的順序相同。 其中的每乙個響應都和使用單個getrequest 請求所得到的響應體相同:

"docs":[

,"_version":10

},}]}

如果想檢索的資料都在相同的_index中(甚至相同的_type中),則可以在 url 中指定預設的/_index或者預設的/_index/_type

你仍然可以通過單獨請求覆蓋這些值:

/website

/blog

/_mget,]

}事實上,如果所有文件的_index_type都是相同的,你可以只傳乙個ids陣列,而不是整個docs陣列:

/website

/blog

/_mget

注意,我們請求的第二個文件是不存在的。我們指定型別為blog,但是文件 id1的型別是pageviews,這個不存在的情況將在響應體中被報告:

"docs":[

},]}

未找到該文件。

事實上第二個文件未能找到並不妨礙第乙個文件被檢索到。每個文件都是單獨檢索和報告的。

即使有某個文件沒有找到,上述請求的 http 狀態碼仍然是200。事實上,即使請求 沒有

找到任何文件,它的狀態碼依然是200--因為mget請求本身已經成功執行。 為了確定某個文件查詢是成功或者失敗,你需要檢查found標記。

取回乙個文件

可以從主分片或者從其它任意副本分片檢索文件 如下圖所示 取回單個文件 以下是從主分片或者副本分片檢索文件的步驟順序 1 客戶端向node 1傳送獲取請求。2 節點使用文件的 id來確定文件屬於分片0。分片0的副本分片存在於所有的三個節點上。在這種情況下,它將請求 到node 2。3 node 2將文...

ElasticSearch(三)檢索多個文件

如果我們需要檢索多個文件,那麼我們不需要單獨一次一次的請求es集群,這樣對網路開銷比較大,我們可以利用multi get api實現乙個請求檢索多個文件。multi get api的引數時候docs陣列,陣列的每個節點定義了 index type id,如果你需要檢索乙個或者多個字段,也可以在節點中...

vba合併多個Excel文件

引用自 僅適用於每個sheet的第一行是資料頭,資料從第二行開始。sub 合併工作簿 dim fileopen dim x as integer remexcel 97 2003 工作簿 xls xls multiselect true,title 請選擇需要合併的工作簿 x 1 if typena...