0
我使用R查詢ElasticSearch(使用彈性客戶端),似乎我無法訪問超過1000條記錄。即使$hits$total
返回4187.記錄數限制爲1000(Elasticsearch上的R客戶端)
以下是應用於返回列表時str
函數的第一行。
List of 4
$ took : int 1844
$ timed_out: logi FALSE
$ _shards :List of 3
..$ total : int 692
..$ successful: int 692
..$ failed : int 0
$ hits :List of 3
..$ total : int 4187
..$ max_score: num 1
..$ hits :List of 1000
如果我限制我的查詢較少的記錄,我不明白這個問題。以下是str
功能的第一線時,應用到返回的列表,在這裏我們看到,$hits$total
等於返回列表的數量 - 我想這可能是由於一些配置參數$hits$hits
List of 4
$ took : int 157
$ timed_out: logi FALSE
$ _shards :List of 3
..$ total : int 692
..$ successful: int 692
..$ failed : int 0
$ hits :List of 3
..$ total : int 13
..$ max_score: num 1
..$ hits :List of 13
,因爲這個限制如此確切。我如何避免這種限制並訪問所有列表/記錄數量?
EDIT:(附加信息)
參數body
是
bdy <- '{
"id": "getKpiHistMetric",
"params": {"KpiKey":"Agg:Net|SL,Wind:10min,Net:PT,SL:1,Metric:Rate",
"from": "2016-11-01T00:00:00",
"to": "2016-11-30T23:59:59"}
}'
作用中,在整個列表時的錯誤apears。首先,我創建一個空的data.frame
df <- data.frame(DATE = integer(),
TICK = integer(),
VALUE = double(), stringsAsFactors = FALSE)
然後我填滿它:
for(i in 1:q$hits$total){
a <- as.Date(as.POSIXct(q$hits$hits[[i]]$`_source`$Timestamp/1000, origin="1970-01-01"), format = "%m/%d/%y")
b <- strftime(as.POSIXct(round(q$hits$hits[[i]]$`_source`$Timestamp/1000, -1), origin="1970-01-01"), format = "%H:%M")
c <- q$hits$hits[[i]]$`_source`$Value
df.row <- data.frame(DATE = a, TICK = b, VALUE = c, stringsAsFactors = FALSE)
df <- rbind(df, df.row)
}
這時我收到以下錯誤:
Error in q$hits$hits[[i]] : subscript out of bounds
這時,i = 1001
你應該能夠使用默認的ES配置高達10000。你使用'size'參數嗎?或者你可以在正文 – sckott
中做到這一點,這個錯誤與'elastic' pkg沒有多大關係,這就是你在for循環中的內容,你試圖對ES中的結果建立索引,而這些結果不再有任何結果 – sckott