elasticsearch 的速度已經很快了,但甚至能更快。
將多個請求合併成乙個,避免單獨處理每個請求花費的網路延時和開銷。 如果你需要從 elasticsearch 檢索很多文件,那麼使用 multi-get
或者mget
api 來將這些檢索請求放在乙個請求中,將比逐個文件請求更快地檢索到全部文件。
mget
api 要求有乙個docs
陣列作為引數,每個
元素包含需要檢索文件的元資料, 包括_index
、_type
和_id
。如果你想檢索乙個或者多個特定的字段,那麼你可以通過_source
引數來指定這些欄位的名字:
/_mget,]
}
該響應體也包含乙個docs
陣列
, 對於每乙個在請求中指定的文件,這個陣列中都包含有乙個對應的響應,且順序與請求中的順序相同。 其中的每乙個響應都和使用單個get
request 請求所得到的響應體相同:
"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...