これがどのように行われるかはわかりませんが、間隔を使用してX回の発生ごとに統計を提供するファセットを持つことは可能ですか?例として、netが次のような日付順に並べられた一連の数字である場合:
1,2,3,4,5,6,7
間隔を2に設定し、次のようなヒストグラムを取得したいと思います。
count: 2
value: 3,
count: 2,
value: 7,
count: 2,
value: 11,
...
これがどのように行われるかはわかりませんが、間隔を使用してX回の発生ごとに統計を提供するファセットを持つことは可能ですか?例として、netが次のような日付順に並べられた一連の数字である場合:
1,2,3,4,5,6,7
間隔を2に設定し、次のようなヒストグラムを取得したいと思います。
count: 2
value: 3,
count: 2,
value: 7,
count: 2,
value: 11,
...
Elasticsearch は、そのままではこのような操作をサポートしていません。このようなファセットを作成することは可能ですが、非常に複雑なカスタム ファセット プロセッサを作成し、必要に応じてレコードをシャードに分割する方法 (いわゆるルーティング) を制御する必要があるため、あまり実用的ではありません。
Elasticsearch では、要素のグローバルな順序に依存する操作は、アーキテクチャの観点からはやや問題があります。Elasticsearch はレコードをシャードに分割し、検索やファセット計算を含むほとんどの操作はシャードで実行され、その後、これらのシャード レベルの操作の結果が収集され、グローバルな結果にマージされます。これは基本的に map/reduce アーキテクチャであり、elasticsearch の水平スケーラビリティの鍵です。ファセットを最適に実装するには、id のハッシュ コードではなく、順序に基づいてレコードがシャードに分割されるようにルーティングを変更する必要があります。または、シャード レベル フェーズをフィールド値の抽出のみに制限し、マージ フェーズでファセットの実際の計算を実行することによっても実行できます。後者のアプローチはより実用的であるように見えますが、同時に、すべてのレコードのフィールド値を単純に抽出し、クライアント側で計算を行うことと大差ありません。必要な並べ替え順序を使用してすべての値を抽出し、クライアントですべての統計を計算するだけです。インデックス内のレコード数が多い場合は、次を使用できます複数のリクエストを使用してすべてのレコードを取得する スクロール API 。