1
私はプログラミングに慣れていないため、elasticsearchに格納されたデータから1ヶ月間の使用電力の合計を取得したいと考えています。 scalaでJava APIを使用するのは難しいです。これは私がscalaでJava APIを使用してelasticsearch集計を作成する方法
POST /myIndext/myType/_search?search_type=dfs_query_then_fetch
{
"aggs": {
"duration": {
"date_histogram": {
"field": "Day",
"interval": "month",
"format": "yyyy-MM-dd"},
"aggs": {
"Power_total": {
"sum": {
"field": "myField"
}
}
}
}
}
}
結果が
("aggregations": {
"duration": {
"buckets": [
{
"key_as_string": "2017-01-01",
"key": 1480550400000,
"doc_count": 619,
"myField": {
"value": 5218.066633789334
}
}
は次に、この
val matchquery = QueryBuilders.matchQuery("ID", configurate)
val queryK = QueryBuilders.matchQuery("ID", configurate)
val filterA = QueryBuilders.rangeQuery("Day").gte("2017-01-02T00:00:05.383+0100").lte("2017-01-13T00:00:05.383+0100")
val query = QueryBuilders.filteredQuery(queryK, filteAr)
val agg = AggregationBuilders.dateHistogram("duration")
.field("Day")
.interval(DateHistogramInterval.MONTH)
.minDocCount(0)
.extendedBounds(new DateTime("2017-01-01T00:00:05.383+0100"), new DateTime("2017-01-13T00:00:05.383+0100"))
.subAggregation(AggregationBuilders.sum("power_total").field("myField"))
val result: SearchResponse = client
.prepareSearch("myIndex")
.setTypes("myType")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(query)
.addAggregation(agg)
.addSort("Day", SortOrder.DESC)
.setSize(815)
.addField("myField")
.execute()
.actionGet()
val results = result.getHits.getHits
println("Current results: " + results.length)
for (hit <- results) {
println("------------------------------")
val response = hit.getSource
println(response)
}
client.close()
結果が
current result = 0
なっていない午前、なぜ私に知らせてくださいScalaのコードWASれるWASやったことあります私がseを使っているように "myField"の値nse。
私はそれを個別にやってみましたが、同じエラーが発生しました。質問応答を正しい方法で解析しない可能性がありますか?
センスクエリーを正確に複製しようとしていますか?もしそうなら、最初は 'myIndext'が使用されていますが、スカラコードの' myIndex'は –
です。私の答えはチェックしていません。私が使った名前ではなく、 "myIndex"を目的に付けました。 –