2017-11-06 17 views
0

これが私が探している正しいものなのかどうか分からない、誰かが正しい方向に向けるのだろうか?アルファベット順の範囲?

この特定のelasticsearchインスタンスで実行されるデータは、すべて同じAPIの一部であるため、いくつかの種類があります。この特定のデータセットに必要なものは、A-G、H-N、O-U、V-Zなどの文字グループで始まるすべての検索結果を検索して返すことです。

これは範囲または集計と見なされているのか、検索後にプログラムで行う必要があるかわかりません。誰かが私を正しい方向に向けることができますか?私は正直に言えば、これに関してGoogleの言葉が何であるかを確かめていない。

答えて

1

私はそこに3つの側面があると思います。

グループの基にするフィールドにはmulti-fieldsの機能を利用できます(nameフィールドとしましょう)。 edge_ngram tokenizermin_gram = 1とmax_gram = 1で解析されるこの目的のためのパスはname.first_letterです。したがって、このパスでは名前の最初の文字による検索とフィルタリングが可能です。

4つのバケツを得るために、filters bucket aggregationあなたがバケツ['A', 'B', ..., 'G']を表す値をフィルタリングname.first_letterに対して適用termsフィルタで使用することができます。

ただし、バケット集計ではドキュメント数が返されます。バケツヒットを実際に引き出すには、top_hits aggregationを活用したサブアグリゲーションを指定する必要があります。

関連する問題