問題タブ [elasticsearch-aggregation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
702 参照

elasticsearch - Elasticsearch Java API : ドキュメント数の集計フィルター

頻度が特定のしきい値を超えるドキュメントのみを返す集計を実装したいと考えています。

たとえば、すべてのドキュメントとそのカウントを取得する集計は次のとおりです。

これにより、各値のドキュメント数が得られますcolumn_name

ここで、これらのドキュメントのすべてが必要ないとしましょう。doc_countよりも大きいものだけが欲しい25

したがって、理想的な結果は

[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"}]

このようなフィルターを集計に適用するにはどうすればよいですか? 集計を見てFilterBuildersフィルターをかけていましたが、それらはドキュメント内の任意の値にフィルターを適用するためのものです。たとえば、フィルターを適用して、ドキュメントのみを取得できval1 == xzaますcolumn_name

しかし、それは私が探しているものではありません。doc_cunt集計が適用された後に、値にしきい値を適用したいと考えています。

これは可能ですか?私はelasticsearch Java APIバージョン1.7.2を使用しています

0 投票する
0 に答える
149 参照

elasticsearch - エラスティック検索では、バケットの集約とカーディナリティで間違った結果が返される

2 つの異なる期間のユニーク ユーザーを取得するエラスティック検索クエリを作成しています。また、総ユーザー数。これは、今日の Web サイトのユニーク ユーザーを特定するためのものです。

私が計画しているのは、合計ユーザーと昨日までのユーザーを計算し、(total_users - users_until_yesterday) を引いて、今日のユニーク ユーザーを取得することです。

users_until_yesterday は、before_and_after_today 集計の最初のバケットです。

このクエリを実行すると、users_until_yesterday の値が total_users より多くなります。理由はわかりません

よろしくお願いします。

更新:precision_thresholdを非常に高い値として使用することで、今のところ機能しています。precision_threshold の最大値は 40,000 であるため、値が 40,000 を超えると問題になると思います。

0 投票する
1 に答える
1979 参照

python - Elasticsearch: 時間範囲の集計が期待どおりに機能しない

私はelasticsearchドメインが初めてです。私はそれが私のニーズを満たしているかどうかを確認するためにそれを学び、試しています。

現在、私はelasticsearchで集計を学習しており、次のpythonスクリプトを作成して、時系列データをelasticsearchに取り込みました。

5 秒ごとに、次の新しいメッセージを作成します。

  1. タイムスタンプ (ISO8601 形式)
  2. カウンター
  3. 0 から 100 までの乱数

新しい日ごとにlogs_Y-m-D、インデックス名として新しいインデックスを作成します。

Counterメッセージをとして使用して、すべてのメッセージにインデックスを付けます_id。カウンターは、新しいインデックスごとに (毎日) リセットされます。



このスクリプトを30 分間実行しました。次に、Sense を使用して、次の集計クエリを使用して elasticsearch にクエリを実行します。

クエリ #1: すべて取得

クエリ #2: 過去 1 時間のログを集計し、それらの統計を生成します。これは正しい結果を示しています。

クエリ #3: 過去 1 分間のログを集計し、それらの統計を生成します。集約されるドキュメントの数は、1 時間の集約と同じです。理想的には、 12 ~ 13 個のログのみを集約する必要があります。

クエリ #4: 過去 15 秒間のログを集計し、それらの統計を生成します。集約されるドキュメントの数は、1 時間の集約と同じです。理想的には、3 ~ 4 個のログのみを集約する必要があります。

私の質問:

  1. Elasticsearch が 1 分 15 秒の範囲を認識できないのはなぜですか?
  2. マッピングは理解できますが、書き方がわからないので書いていません。それがこの問題の原因ですか?

助けてください!


クエリ #1: すべて取得

出力:

クエリ #2: 過去 1 時間の統計を取得します。

出力:

366 エントリを取得しましたが、これは正しいです。

クエリ #3: 過去 1 分間の統計を取得します。

出力:

これは誤りです。過去 1 分間で 407 エントリになることはできません。12 ~ 13 個のログのみである必要があります。

クエリ #4: 過去 15 秒間の統計を取得します。

出力:

これも間違っています。最後の 15 秒間で 407 エントリになることはできません。3 ~ 4 個のログのみである必要があります。

0 投票する
1 に答える
607 参照

elasticsearch - Elasticsearch: メトリクス集計の結果を使用してバケットの要素をフィルタリングし、追加の集計を実行する

次のようなデータセットが与えられた場合

次の集計を実行したいと思います。

  • まず、集約という用語を使用して、バケット内の「タイプ」でグループ化したいと思います。
  • その後、 extended_statsを使用してフィールド「値」のいくつかのメトリックを計算したいと思います。
  • std_deviation_bounds (上限と下限) を知っているので、範囲外のものを除いたバケットの要素の平均値を計算したいと思います [std_deviation_bounds.lower, std_deviation_bounds.upper]

リストの 1 番目と 2 番目のポイントは些細なことです。3 番目のポイントである、兄弟メトリック集計結果の情報を使用して、バケットの要素を除外し、平均を再計算することが可能かどうかを知りたいです。もしそうなら、使用する必要がある集計構造のヒントが欲しいです。

Elasticsearch インスタンスのバージョンは 5.0.0 です

0 投票する
2 に答える
1436 参照

elasticsearch - 集計を使用した Elasticsearch 日付範囲クエリ

次のクエリを実行しようとしています。ドキュメントの STATUS に 3 つの属性があります。これは、"FAIL"、"PASS"、"INVALID" DATE のいずれかで、日付と時刻が含まれています。

ステータスごとの1日のカウント数が欲しい

例: 日付: 11-09-2016、ステータス: 失敗、カウント: 120
日付: 11-09-2016、ステータス: 合格、カウント: 150

過去 1 か月、2 か月などのデータが必要です

このコードは、各ステータスの毎日のカウントを示しますが、すべてのレコードについてです。以下のような範囲フィルターを追加します。

しかし、これら 2 つのクエリのコンテンツをマージすることはできません。私は最善を尽くしました。どんな助けでも大歓迎です。

0 投票する
1 に答える
187 参照

elasticsearch - Elasticsearch で、5 分ごとの時間でグループ化するために集計用語を記述する方法

このようなelasticsearchのいくつかのデータ:

「lts_at is」はタイムスタンプで、「floor(lts_at/300)」のデータでグループ化したい

集計クエリの書き方