は私が持っているものです:私は「Elasticsearch用のJava API」と同じ結果を得ることはありません。ここで「Kibana」
私はドキュメントの数千人を格納elasticseachにインデックスを持っています。各ドキュメントには「deviceName」というフィールドがあります。
は私が私のインデックスとその出現(デバイスがこのインデックスに表示される時間の数)に保存されているすべてのデバイスを取得したい:ここ
は、私はJavaのAPIをどうしたいものです。私はKibanaで検索方法
String[] indexVector = new String[1];
indexVector[0] = "myIndex";
String [] values = new String[2];
values[0] = "sum_delta";
values[1] = "count_frames";
String [] totalPercentage = new String[1];
totalPercentage[0] = "devices>per_percentage";
SearchResponse response = (SearchResponse) client.prepareSearch(indexVector)
.setSize(10000)
.addAggregation(AggregationBuilders.terms("devices").field("deviceName")
.size(100)
.subAggregation(AggregationBuilders.sum("sum_delta").field("delta"))
.subAggregation(AggregationBuilders.count("count_frames").field("cnt"))
.subAggregation(PipelineAggregatorBuilders.bucketScript("per_percentage")
.setBucketsPaths(values)
.script(new Script("_value0/(_value0 + _value1 + 1)"))
)
)
.addAggregation(PipelineAggregatorBuilders.avgBucket("avg_per_all_devices")
.setBucketsPaths(totalPercentage)
)
.execute()
.actionGet();
ここに私の結果は次のとおりです。
のJava APIを使用すると、私は63を得る。ここ
は私のJavaコードがありますデバイスとkibana 64デバイスとの接続を可能にします。しかし、私の最大の問題は発生です。確かに、30未満の出現を持つデバイスの場合、私はJava APIとKibanaで同じ結果を得ています。しかし、出現が大きい場合、キバナはJava APIによって返されるものより大きい出現を返します。例:kibanaは1010を返すと同時にjava apiは880を返します。
なぜ私は本当に大きな違いがあるのか分かりません。
質問:
そう、あなたは私のコードで何が間違っていると私がしなければならないものを私に伝えることができますしてください?
ご協力いただきありがとうございます。
正確なコピー/貼り付けコードですか、それとも入力したのですか?それはコンパイルされないためです。正確なJavaコードをコピー/貼り付けてください。木場が送ったリクエストも表示できますか? – Val
私は私の質問に関連しないと思った部分を私のコードで削除しました。私は木場で自分の研究をどのようにしているかを示すために写真を追加しました。 –