問題タブ [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.
elasticsearch - 日付比較と計算によるelasticsearch集計
こんにちは、elasticsearch は初めてです。日付比較と動的範囲フィルターを使用して集計を取得する必要があります。
同様に、created_atドキュメントがidentification_dateより1週間早いドキュメント数を取得する必要があります。
だから私はこのようなことを試みましたが、私の日付パラメータは使用されていないようで、実際に変更しても結果は変わりません。
お時間を割いていただきありがとうございます。
elasticsearch - ElasticSearch 集計を使用して完全なドキュメントを取得する
次のようなインデックスがあります。
そして、 distinct で結果を取得したいのですが、Department
順序は気にせず、 ごとに 1 つの結果だけDepartment
です。集計を試してみましたが、関連付けられDeppartments
たdoc_countとの違いしか得られませんでした。彼らは私が試したクエリは次のようなものです:
戻り値:
次のようなものが欲しいとき:
elasticsearch - グループごとのファセットを除外する、Elasticsearch 集計の多面的なナビゲーション
私は ES にかなり慣れていないので、ほとんどの大規模な e コマース ストアと同じ方法でファセット ナビゲーションを実装しようとしています。
私の製品マッピングの一部は次のようになります。
ご覧のとおり、ファセットをネストされたオブジェクトとして「フィルター」に格納しています。
私の検索クエリでは、この集計をクエリに追加できます。
これにより、ナビゲーションに貼り付けるファセットの優れたリストが得られます。選択したファセットをドキュメントの結果に適用するには、次の 2 つの方法があります。「ポスト フィルター」または「フィルターされたクエリ」を使用します。
ポスト フィルターは、クエリの後に集計を適用するため、ユーザーが選択したファセットに関係なく、ドキュメント カウントが得られます。対照的に、フィルター処理されたクエリは、選択されたファセットに基づいてファセット数を計算しますが、一致するドキュメントがないファセットを非表示にします。
私がしなければならないこと、そしてほとんどの大手 e コマース ストアが行っていることは、2 のハイブリッドです。
これらのファセットがある場合:
色:
- 赤 (1)
- ブルー (2)
- グリーン (3)
ブランド:
- アウディ (1)
- フォード (2)
- BMW (3)
誰かが青を選択した場合、カウントは赤と緑で同じままである必要がありますが、ブランドのカウントに影響します.
Stack Overflow で同様の質問を見つけました: ElasticSearch 集計: 集計ごとに 1 つのフィルターを除外します
収集できるものから、事前に定義されたファセットのリスト (リレーショナル DB から) を提供し、それらを集計に追加する必要があります。そこで、ファセット グループの手動リストを作成し、これらのそれぞれにフィルター バケット ( https://www.elastic.co/guide/en/elasticsearch/guide/current/_filter_bucket.html ) を追加します。フィルター内で、ユーザーが選択したすべてのファセットを含む bool クエリを追加する必要があります。これには、各ファセット グループに含めるファセットが含まれ、そのグループに属するファセットは除外されます。
これで、ファセット グループごとにグループ化/バケット化された集計の膨大なリストができました。これらのそれぞれには、多数の選択されたフィールドを持つ可能性のある bool クエリを含むフィルターがあります。クエリが非常に大きいため、ここに投稿した場合、1 ページに収まらない可能性があります。
これは、私が以前にやらなければならなかったことがほとんど必要だったことを考えると、私のクエリへのクレイジーな追加のように思えます。これは私がこれを達成できる唯一の方法ですか?
私の質問が十分に明確であることを願っています。
elasticsearch - スクリプト内の match_query? 【エラスティックサーチ】
非常に複雑な集計があります。その複雑さは、has_parent 集計がないことが原因です。そのため、groovy を使用して実装されています。私が抱えている唯一の問題は、集計でカウントされるドキュメントをフィルタリングすることです。
集計は次のようになります: https://gist.github.com/serj-p/c4fcc9810b3b627de294 この集計の目的は、連絡先が卒業した大学のトップを構築することです。連絡先ドキュメントには、Facebook のプロフィールである子ドキュメントがあります。最後のものには、大学を表すフィールドがネストされているため、_source フィールドにアクセスします。
ご覧のとおり、最初にフィルタリングを実行します。
関連するドキュメントを持っていない連絡先を除外します。「organizations.name」は次のように分析されます
このフィールドをフィルタリングするためにappleidされているテキストは、同じ方法で分析されています。特定のネストされたドキュメントをフィルタリングする必要があるスクリプト内で、フィールド値とフィルタリングテキストの同じ処理を行うのは非常に難しいことがわかりました。そのため、スクリプトから ES API にアクセスしてそうする可能性を探しています。
事前にアドバイスをありがとう
elasticsearch - 特定のフィールドでグループ化する場合の ClassCastException[null]
次のクエリを使用して、特定のフィールドの結果をグループ化しようとしています。
Elasticsearch サーバーは次の例外をスローします。
それも断続的に - 結果が返される場合と返されない場合があります。サーバー ログには、これ以上の説明情報はありません。
誰もこの問題の手がかりを持っていますか?
elasticsearch - エラスティックサーチのネストされた集計で空フィールドと空でないフィールドをバケット化する方法は?
私は、elasticsearch に次のネストされたサブ集計のセットを持っています (field2 は field1 のサブ集計であり、field3 は field2 のサブ集計です)。ただし、field3 の用語集約は、field3 を持たないドキュメントをバケット化しないことがわかりました。
私の理解では、field3 の用語クエリに加えて、Missing サブ集計クエリを使用してそれらをバケット化する必要があります。
しかし、それを以下のクエリに追加して両方をバケット化する方法がわかりません。
elasticsearch - エラスティックサーチの「逆カーディナリティ」?
人々が行った旅行を保存するマッピングがあり、そのマッピングにユーザー ID のフィールドがあるとします。例えば:
人数 (user_id) でバケット化された旅行の量 (このマッピングを持つエントリ) を返すクエリを作成しようとしています。
たとえば、次のようなものが返されます。
この種のクエリに直面する方法がわかりません。私はしばらくの間、バケットとサブ集計という用語をいじっていましたが、役に立ちませんでした。
どんな助けでも感謝します。
アップデート
次に例を示します。
インデックスに次のレコードがあるとします。
私のクエリは次のようなものを返します:
2 つの旅行 (ID 11019) を持つ 1 人のユーザーと、1 つの旅行 (ID 11020 および 11021) を持つ 2 人のユーザーがいるからです。