問題タブ [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.

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

elasticsearch - doc_count に基づく Elasticsearch 範囲バケット集計

このようなelasticsearch集計クエリがあります。

そして、次のようなバケット集約になります

doc_count に基づく別の範囲バケット集計が必要です。したがって、必要な最終結果は

  • 範囲のキーが複数あるため、バケット セレクター集計とバケット合計集計の使用は機能しません。
  • Bucket Script Aggregation は、バケット内で計算を行います。
  • これらのバケットの作成に役立つスクリプト化されたドキュメント フィールドを各ドキュメントに追加できますか?
0 投票する
1 に答える
195 参照

elasticsearch - Elasticsearch の最後のドキュメントを集計する

私はESに少し慣れていないので、次のことを行う方法がわかりません:

いくつかの「すべき」パラメーターのみを含むクエリで検索を実行します。

次に、パーセンタイル、ターム バケットなどのいくつかの集計も行います。

しかし、集計については、たとえば、最初の 1000 個のドキュメントを集計したいだけです (スコアが付けられ、スコアによって順序付けられることを願っています)。

アイデアは、特定の用語の集計が必要ですが、十分な数が見つからない場合はそれを埋めますが、集計する特定の最大数に制限されています。ドキュメントからsizeは、返されるドキュメントの数であり、agg に使用されるサイズではないようです (ヒットは必要ありません。返される agg のみです)。

では、これについてどうすればよいでしょうか。ネストされた/後続のクエリはありますか? pipelineたとえば、1,000 個のドキュメントを検索して、それを集計する必要がありますか?

ドキュメントがインデックス付けされたタイムスタンプで最初にソートできれば理想的です-「いっぱいになる」ために使用されるドキュメントが最新になるように-しかし、AFAIKは不可能ですか?

埋めますか?

「埋める」とは、指定された 1 つの「すべき」フィールドに対して 100 個のドキュメントがあることを意味します。次に、必要な1kの結果サイズを集計するために、他の900個のドキュメントが必要です(必要な数まで埋めるため)。したがって、フィルターを使用する代わりに、ドキュメントで「結合されたクエリ」を見たので、「すべき」パラメーターを使用するだけで十分だと思います。

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

python - xより大きいIDフィールドを照会するElasticsearchの方法

Elasticsearch の 10k の壁を超えるために複数回クエリを実行して、結果にページネーションを適用しようとしています。Elasticsearch の結果は複数のクエリで異なる可能性があるため、生成された ID を使用して次の結果を取得したいと考えています。

たとえば、1000 件の結果を返すクエリを実行するとします。次に、1000 番目の結果の ID 値を取得し、次のようなクエリを実行します: match : ID {{1000thID}}

このようにして、1001 から 2000 までの結果を取得したいと考えています。その後 2001 年から 3000 年まで、というように続きます。

現在、Python 用の Elasticsearch DSL を使用して、次のようなドメイン名を照会しています。

上記の要件に一致するようにこのコードを再構築するにはどうすればよいですか。('一致',_ID > ID_変数)

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

groovy - Groovy スクリプトの構文エラー - 何が問題なのですか?

Elasticsearch DSL スクリプトで次の groovy スクリプト スニペットを実行しようとしています。

[doc['availabilities.start'], doc['availabilities.end']].transpose().any { (start, end) -> end.date.getMillis() >= 11 } return 2; ```

これにより、次のエラーがスローされます ここに画像の説明を入力

私はGroovyにかなり慣れていないため、ここで間違った構文を理解できません。どんな助けでも大歓迎です。