検索ブループリントの結果の並べ替え
検索結果の順序を制御するには、ブループリントの検索に 並べ替え構成 を追加します。
-
グローバル メニュー (
) を開き、 アプリケーション タブをクリックして、 ブループリントを選択します。 -
ブループリントを作成するか 既存のブループリントを開きます。
-
[Configuration]タブをクリックし、[Sort Configuration]テキストエリアにJSONを入力します。

以下の例は単純なものです。 堅牢なソート構成は、あらゆるシナリオを考慮する必要があります。 たとえば、検索結果ドキュメントに並べ替えフィールドが含まれていない場合は、 欠落している パラメータを使用して並べ替えの動作を構成します。
詳細については、 Elasticsearch のソートに関するドキュメント を参照してください。
設計図やその他の並べ替えの貢献者を検索する
ブループリントと同様に、検索リクエストの ソート 配列に要素を追加する他のソート コントリビュータもあります。 たとえば、ソート配列には次の 2 つの要素があります。
"sort": [
{
"modified": {
"unmapped_type": "keyword",
"order": "desc"
}
},
{
"localized_title_en_US_sortable": {
"unmapped_type": "keyword",
"order": "desc"
}
}
]
リクエスト内に複数の sortがある場合、それらは表示された順序で適用されます。 上記の例では、結果は 変更された フィールドで並べ替えられ、最後に変更された結果がリストの最初に表示されます。 複数の結果に同一の 修正された 値がある場合、それらはローカライズされたタイトルのアルファベット順で降順で並べ替えられます。
検索リクエストに sortがない場合、結果は関連性スコアによって並べ替えられます。
検索ブループリントと並べ替えウィジェット
並べ替えウィジェット を使用して検索ページまたは検索ブループリントで結果を並べ替えることができます。
並べ替えウィジェットは、 関連性で並べ替え オプションを選択した場合、提供されている関連性による並べ替えにデフォルト設定されるので、リクエストには何も貢献しません。 ただし、ページに適用されるブループリントで並べ替えが設定されている場合は、リクエスト内の sort 配列に追加されます。 したがって、 並べ替えウィジェットが 関連性で並べ替えに設定されている場合、ブループリントの並べ替えが優先されます。
sortが Sort ウィジェットとブループリントによって提供される場合、異なるシナリオが発生します。 この場合、両方とも配列に追加されますが、Sort ウィジェットの寄与が配列の最初にリストされるため、その sortが最初に適用されます。 したがって、 関連性以外の基準で並べ替える場合は、並べ替えウィジェットの並べ替えが最初に適用されます。
検索ブループリントとヘッドレス API
ヘッドレス API の /search エンドポイントからの結果を、ブループリントまたは sort API パラメータを使用して並べ替えることができます。 両方ともリクエストに sortを追加すると、ブループリントのが配列の最初に表示されます。 したがって、 ブループリントのソートが最初に適用され、ヘッドレス API パラメータによって追加されたソートが後に適用されます。
例1:タイトル順に並べ替える
ソート設定とは、昇順(asc)または降順(desc)で並べ替えるフィールドを定義する sorts 配列を持つJSONオブジェクトです。
{
"sorts": [
{
"localized_title_${context.language_id}_sortable": "asc"
}
]
}
-
検索ドキュメントには、特に
titleのようなローカライズされたテキスト フィールドの場合、同様の名前のフィールドのバリエーションを含めることができます。localized_title_en_US_sortableのように、フィールドのローカライズされ並べ替え可能なキーワードのバリエーションを使用します。 各エンティティのドキュメントを確認し、使用可能なフィールドを探します。 たとえば、title_sortableは共通フィールドですが、同じエンティティにlocalized_title_en_US_sortableも含まれる場合があります。 -
言語 ID を直接入力する代わりに、
${context.language_id}変数を使用して、現在の言語で 4 文字の言語コード (例:en_US) を自動的に入力します。 -
ドキュメントのフィールドを表示するには、ブループリントのツールバーで プレビュー をクリックし、検索を実行して、結果のフィールドを展開します。
例2:ストラクチャー項目による並べ替え
Web コンテンツ構造、 ドキュメント タイプ、および フォーム フィールド データは、 ddmFieldarrayと呼ばれるネストされたフィールドにインデックス付けされます。
"ddmFieldArray" : [
{
"ddmFieldName" : "ddm__keyword__30805__department_en_US",
"ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
"ddmFieldValueKeyword_en_US" : "true",
"ddmFieldValueKeyword_en_US_String_sortable" : "true"
}
]
ネストされたフィールドを含むドキュメントを表示するには、
-
ドキュメント
_sourceの取得を有効にするには、ブループリントの[設定]タブを開き、このJSONを[詳細設定]ボックスに入力します。{ "source": { "fetchSource": true } } -
ツールバーのプレビューをクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。
ネストされたフィールドの場合、ソート構成のフィールド宣言はより複雑になります。
{
"sorts": [
{
"ddmFieldArray.ddmFieldValueKeyword_${context.language_id}_String_sortable": {
"nested": {
"nested_path": "ddmFieldArray",
"nested_filter": {
"term": {
"ddmFieldArray.ddmFieldName": {
"value": "ddm__keyword__30805__department_${context.language_id}"
}
}
}
},
"order": "asc"
}
}
]
}
例3:オブジェクトフィールドによる並べ替え
オブジェクト 入力フィールドは、検索エンジン ドキュメント内のネストされたフィールドとしてインデックス付けされます。
ドキュメントを表示する際、オブジェクトのネストされたプロパティは nestedFieldArrayの下に表示されます。
"nestedFieldArray" : [
{
"fieldName": "total",
"valueFieldName": "value_integer",
"value_integer": "8"
}
]
ネストされたフィールドを含むドキュメントを表示するには、
-
ドキュメント
_sourceの取得を有効にするには、ブループリントの[設定]タブを開き、このJSONを[詳細設定]ボックスに入力します。{ "source": { "fetchSource": true } } -
ツールバーのプレビューをクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。
この例では、オブジェクトの整数フィールドで並べ替えます。
{
"sorts": [
{
"nestedFieldArray.value_integer": {
"nested": {
"nested_path": "nestedFieldArray",
"nested_filter": {
"term": {
"nestedFieldArray.fieldName": "total"
}
}
},
"order": "desc"
}
}
]
}