ElasticSearchにR(エラスティッククライアントを使用)を照会しています。 $hits$total
が4187を返しても、返されたリストに適用されたときの最初の行はstr
です。レコード数が1000に制限されています(ElasticSearchのRクライアント)
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
私のクエリをより少ないレコードに限定すれば、この問題は発生しません。我々は$hits$total
が返されたリストの数に等しいことがわかり返されたリストに適用されたときstr
関数の最初の行は次のとおり - $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
は、リスト全体にわたってinterating時にエラーがapears
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"}
}'
あります。まず私は、空の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