問題タブ [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 に答える
2580 参照

elasticsearch - Elasticsearch のクエリによるドキュメント数の集計 (solr の facet.query など)

メインクエリがあり、いくつかのサブクエリの一致数が必要です。solr の言葉では、facet.queryが必要です。私が見逃しているのは、 value_count 集計doc_countのような単純な集計です。

助言がありますか?

私は好きではない2つの可能な解決策を見つけました:

  1. 上のvalue_countメトリックでフィルタ集計を使用します。_id

例:

  1. マルチ検索 APIを使用する

例:

match_mainソリューション 2 の方が高速ですが、複雑なクエリを想像してみてください。doc_count:{}したがって、 の代わりにがある場合は、ソリューション 1 をお勧めしvalue_count:{"field":"_id"}ます。

しかし、基本的な質問に戻ります。elasticsearch の solrfacet.queryに対応するものは何ですか?

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

elasticsearch - 用語の集約 (階層ファセットを実現するため) クエリのパフォーマンスが遅い

エラスティック検索でメトリック名のインデックスを作成しています。メトリック名の形式はfoo.bar.baz.auxです。私が使っているインデックスはこちらです。

上記のインデックスは、メトリック名に対して次の用語を作成しますfoo.bar.baz

以下のようなメトリクスがたくさんある場合

n 番目のレベルのトークンを取得するには、クエリを作成する必要があります。上記の例では

用語集を書く以外に方法が思いつきませんでした。のレベル 2 トークンを把握するためにa.b、私が思いついたクエリを次に示します。

これにより、次のバケットが生成されます。出力を解析し、そこから [c, m] を取得します。

ここまでは順調ですね。このクエリは、ほとんどのテナントでうまく機能します (tenantId term上記のクエリに注意してください)。大量のデータ (約 1 ミル) を持つ特定のテナントでは、パフォーマンスが非常に遅くなります。すべての用語の集計には時間がかかると思います。

この種のデータに対して用語集約が正しい選択であるかどうか疑問に思っており、他の可能な種類のクエリも探しています。

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

elasticsearch - ElasticSearch で日付範囲集計に一致するすべてのドキュメントを表示する方法

エラスティック ドキュメントに従う: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

質問:

日付範囲の集約を作成し、関連する日付バケットに一致するすべてのドキュメントを表示する方法doc_count.

アグリゲーション :

応答:

多分私はいくつかのサブ集計または何か他のことをする必要がありますか?

何か案は?

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

elasticsearch - Elasticsearch: 2 つのフィールドで集計

質問の仕方がわからない。Elasticsearch 2.2 を使用しています。

5 つのドキュメントで構成されるデータセットの例から始めましょう。

called_entityには常にuuidがあります。 coverage_entityは空にすることも、uuidを持つこともできます。

私が望むのは、called_entity.uuidまたはcoverage_entity.uuidのいずれかで集計し、ドキュメントの合計量と success_transfers の合計をカウントすることです。したがって、これらの 5 つのドキュメントについては、結果として次のようになります。

問題は、集約キーがcalled_entity.uuidまたはcoverage_entity.uuuidのいずれかにある限り、同じドキュメントを複数の集約で使用できることを意味することです(それが可能かどうかさえわからないため、投稿していますここ)。

私が現在行っていることは、単にcalled_entity.uuidフィールドを集計することですが、もちろんそれだけでは十分ではありません。

これは私に次のようなものを与えます:

...これは私が望むものではありません。では、複数の値を集計するには、または特定の集計について、(集計内の 1 つのドキュメントだけでなく) すべてのドキュメントに存在する値に基づいてデータを計算するにはどうすればよいでしょうか?

ありがとうございました。

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

elasticsearch - フィールドで集計し、elasticsearch で合計を返す

別のフィールドでフィルタリングした後、フィールドで集計を行う方法を見つけようとしています。しかし、Elastic Search のドキュメントは簡単に理解できるものではありません。

マイ マッピングとしましょう:

必要な集計:

これは私の要件ではありませんが、回答はドキュメントを理解するのに役立ちます。

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

ruby-on-rails - Searchkick のネストされた集計

モデルの色を ID と名前でインデックス付けします。Searchkick で集計を使用する場合、ID と名前の両方を個別にではなく 1 つのハッシュで結果に含める必要があります。

それを達成する方法は?

これが今の仕組みです:

クエリ

結果

ご覧のとおり、ID と名前は別のハッシュにあるため、関係が壊れています。

これを持つ目的は、バックエンドの ID とフロントエンドの名前が必要なさまざまなフィルターを生成することです。これが searchkick で不可能な場合、これを達成するための他の「回避策」はありますか?

ありがとう、ミロ