問題タブ [elasticsearch-dsl]
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 - doc_count に基づく Elasticsearch 範囲バケット集計
このようなelasticsearch集計クエリがあります。
そして、次のようなバケット集約になります
doc_count に基づく別の範囲バケット集計が必要です。したがって、必要な最終結果は
- 範囲のキーが複数あるため、バケット セレクター集計とバケット合計集計の使用は機能しません。
- Bucket Script Aggregation は、バケット内で計算を行います。
- これらのバケットの作成に役立つスクリプト化されたドキュメント フィールドを各ドキュメントに追加できますか?
elasticsearch - Elasticsearch の最後のドキュメントを集計する
私はESに少し慣れていないので、次のことを行う方法がわかりません:
いくつかの「すべき」パラメーターのみを含むクエリで検索を実行します。
次に、パーセンタイル、ターム バケットなどのいくつかの集計も行います。
しかし、集計については、たとえば、最初の 1000 個のドキュメントを集計したいだけです (スコアが付けられ、スコアによって順序付けられることを願っています)。
アイデアは、特定の用語の集計が必要ですが、十分な数が見つからない場合はそれを埋めますが、集計する特定の最大数に制限されています。ドキュメントからsize
は、返されるドキュメントの数であり、agg に使用されるサイズではないようです (ヒットは必要ありません。返される agg のみです)。
では、これについてどうすればよいでしょうか。ネストされた/後続のクエリはありますか? pipeline
たとえば、1,000 個のドキュメントを検索して、それを集計する必要がありますか?
ドキュメントがインデックス付けされたタイムスタンプで最初にソートできれば理想的です-「いっぱいになる」ために使用されるドキュメントが最新になるように-しかし、AFAIKは不可能ですか?
埋めますか?
「埋める」とは、指定された 1 つの「すべき」フィールドに対して 100 個のドキュメントがあることを意味します。次に、必要な1kの結果サイズを集計するために、他の900個のドキュメントが必要です(必要な数まで埋めるため)。したがって、フィルターを使用する代わりに、ドキュメントで「結合されたクエリ」を見たので、「すべき」パラメーターを使用するだけで十分だと思います。
python - xより大きいIDフィールドを照会するElasticsearchの方法
Elasticsearch の 10k の壁を超えるために複数回クエリを実行して、結果にページネーションを適用しようとしています。Elasticsearch の結果は複数のクエリで異なる可能性があるため、生成された ID を使用して次の結果を取得したいと考えています。
たとえば、1000 件の結果を返すクエリを実行するとします。次に、1000 番目の結果の ID 値を取得し、次のようなクエリを実行します: match : ID {{1000thID}}
このようにして、1001 から 2000 までの結果を取得したいと考えています。その後 2001 年から 3000 年まで、というように続きます。
現在、Python 用の Elasticsearch DSL を使用して、次のようなドメイン名を照会しています。
上記の要件に一致するようにこのコードを再構築するにはどうすればよいですか。('一致',_ID > ID_変数)