要素の作成
検索ブループリントには、多数の システム要素が付属しています。 システム要素のいずれもニーズを満たさない場合は、独自の検索ブループリント要素を作成する方法が多数あります。
- カスタム JSON 要素 を使用して、検索ブループリント クエリ ビルダーから要素を作成します。
- 要素の追加ソース エディター を使用すると、便利なプレビュー機能やシステム内の定義済みテンプレート変数のリストなど、より強力な要素エディターを使用して要素を記述できます。
- システム要素を複製して 、独自のカスタム要素の開発を始めましょう。
- Elasticsearch クエリ DSL の使用に慣れていて、Elasticsearch クエリに基づいて要素をすばやく作成する必要がある場合は、 任意の Elasticsearch クエリ システム要素を貼り付ける を使用します。
カスタムJSON要素の使用
他のブループリントで再利用されない要素は、ブループリントでの作業中に クエリ ビルダー で追加できます。 これらは元のブループリントでのみ使用可能であり、ブループリントの検索の要素セクションには表示されません。
カスタム JSON 要素をビルダーに追加し、定型 JSON の編集を開始します。
{
"description_i18n": {
"en_US": "Editable JSON Text Area"
},
"elementDefinition": {
"category": "custom",
"configuration": {},
"icon": "custom-field"
},
"title_i18n": {
"en_US": "Custom JSON Element"
}
}
JSON エディターに入力すると、自動補完によって使用可能なプロパティが表示されます。 さらに理解を深めるには、「 スキーマの理解」を参照してください。
任意の要素をカスタム JSON 要素に書き込むことができますが、通常このアプローチは、クエリ句と条件を追加する単純な要素に最適です。 多くの場合、これらには uiConfiguration セクションは必要ありません。また、要素で使用できる定義済みのテンプレート変数を広範に使用しません。 より複雑なケースでは、 要素ソース エディターを使用します。
たとえば、以下のジャーナル記事の除外要素は、カスタム JSON 要素に基づいています。 条件が追加され、 exclude.journal_articles というパラメータが trueの場合にのみ要素のクエリが適用されます。 クエリは、結果が Web コンテンツ記事の entryClassName フィールドと一致しないようにするために、 must_not term クエリ句を追加します。
{
"description_i18n": {
"en_US": "Exclude journal articles from the search."
},
"elementDefinition": {
"category": "hide",
"configuration": {
"queryConfiguration": {
"queryEntries": [
{
"clauses": [
{
"context": "query",
"occur": "filter",
"query": {
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"term": {
"entryClassName": {
"value": "com.liferay.journal.model.JournalArticle"}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"discussion": false
}
}
]
}
}
]
}
}
}
],
"condition": {
"contains": {
"parameterName": "exclude.journal_articles",
"value": "true"
}
}
}
]
}
},
"icon": "hidden"
},
"title_i18n": {
"en_US": "Exclude Journal Articles"
}
}
この要素は、ブループリントのパラメータ設定を使用して追加できるカスタム変数に依存します。 ブループリントにカスタム変数を追加する方法については、 検索ブループリント構成リファレンス を参照してください。
要素ソースエディタの追加の使用
要素を構築する際に、より強力な編集エクスペリエンスを実現できます。 ブループリントの検索の要素セクションで、 追加 (
) をクリックします。
要素に名前を付けて、 作成をクリックします。 要素ソース エディターが表示され、エディターの左側のペインに定義済み変数が表示されます。 JSON エディターに入力すると、自動補完によって使用可能なプロパティが表示されます。 利用可能な JSON プロパティをさらに理解するには、「 スキーマの理解」を参照してください。

UI 構成オプションは、Element JSON の uiConfiguration プロパティで定義されます。 クエリ ビルダーで要素の構成ウィンドウをプレビューするには、 プレビュー リンク ([キャンセル] ボタンの横) をクリックします。

定義済み変数
要素ソース エディターで要素に定義済みの変数を挿入するには、目的の場所にカーソルを置き、左側のサイドバーで変数をクリックします。 カスタム JSON 要素では、変数をエディターに直接入力する必要があります。
詳細については、 定義済み要素変数リファレンス を参照してください。
要素スキーマを理解する
要素スキーマ は変更される可能性があります。 Liferay バージョン間でスキーマが変更された場合、古い要素の JSON のインポートが失敗する可能性があります。
検索ブループリント要素のスキーマは、 sxp-query-element.schema.json ファイルで定義されています。 REST API Explorer にアクセスできるユーザーは、スキーマをより便利に参照できます。 Liferayにログイン中に
POST /v1.0/sxp-blueprints エンドポイントエントリを展開します。 下にスクロールして、 スキーマ リンク ( サンプル値 リンクの横) をクリックします。

システム要素の構文を調べて、スキーマ要素を使用して要素がどのように構築されるかをよりよく理解します。
各要素には、必須のトップレベル プロパティが 2 つあります: elementDefinition と title_i18n。 elementDefinition には、 カテゴリ と 構成 → queryConfiguration プロパティが含まれている必要があります。
{
"elementDefinition": {
"category": "custom",
"configuration": {
"queryConfiguration": {}
}
},
"title_i18n": {
"en_US": "Custom JSON Element"
}
}
タイトル フィールドで、要素のタイトル テキストを必要な数の言語で設定します。
要素の作成 elementDefinition
elementDefinition で、作業の大部分を実行します。 プロパティには、 カテゴリ、 構成、 アイコン、 uiConfigurationが含まれます。
カテゴリ は、要素の動作を分類する文字列を提供します。 一致、 ブースト、 条件付き、 フィルター、 非表示、または カスタムを指定します。
構成 は queryConfigurationを提供します。これは、 queryEntries プロパティを介して、提供するクエリ句を保持します。
アイコン は、要素に使用するアイコンを設定する文字列を設定します。 Lexicon Icon Library で利用可能な任意の画像を使用できます (例: 親指を立てた画像)。
uiConfiguration は、UI に表示する構成要素を設定し、構成された値とともにカスタム要素に渡します。
たとえば、 entryClassName フィールドで用語クエリの一致を強化する要素は、クエリと UI を次のように構成できます。
"configuration": {
"queryConfiguration": {
"queryEntries": [
{
"clauses": [
{
"query": {
"term": {
"entryClassName": {
"boost": "${configuration.boost}",
"value": "${configuration.entry_class_name}"
}
}
}
}
]
}
]
}
},
"uiConfiguration": {
"fieldSets": [
{
"fields": [
{
"defaultValue": 1,
"label": "Boost",
"name": "boost",
"type": "number",
"typeOptions": {
"min": 0
}
}
]
}
}
要素 構成の定義
configuration プロパティには、ネストされたプロパティ queryConfiguration → queryEntriesが保持されます。
queryEntries JSON を詳しく見てみると、プロパティ 句、 条件、 有効、 postFilterClauses、および 再スコアを含めることができます。
- 上記のスニペットは、
句(要素の配列) を使用して、ブループリント駆動型検索にクエリ句を追加する要素を示しています。クエリに加えて、加算、ブースト、コンテンツ、無効化、フィールド、名前、発生、親を追加できます。型、または値プロパティ。 条件はブールチェックを提供します。 true の場合、指定された句は検索クエリに含まれ、false の場合は除外されます。- 要素を無効にするには、
enabledを false に設定します (デフォルトでは true)。 postFilterClausesを追加します (句要素の配列として)。 追加できるのは、添加剤、ブースト、コンテンツ、無効化、フィールド、名前、発生、親、クエリです。型、または値プロパティ。を追加してを再スコアリングし、クエリの結果の関連性スコアを再計算します。query、queryWeight、rescoreQueryWeight、scoreMode、およびwindowSizeを指定します。 詳細については、 Elasticsearch ドキュメント を参照してください。
uiConfiguration プロパティには、ネストされたプロパティ fieldSet と fieldが保持されます。
UI 構成の各フィールドに追加できる構成プロパティがいくつかあります。
- フィールドの初期値を入力するには、
defaultValueを使用します。 helpTextと入力すると、Blueprints UI のフィールドのヘルプ テキストが表示されます。- 人間が読める形式の
ラベルを入力します。 - フィールド値をクエリ句に渡すときなど、要素内の他の場所でフィールドを参照するために使用できる
名前を入力します:${configuration.name}。 - フィールドの
タイプを設定します。 次から選択します日付、フィールドマッピング、フィールドマッピングリスト(使用可能なフィールドのリスト、ロケール、フィールドブースト)、項目セレクター、json、キーワード、複数選択、数値、選択、スライダー、テキスト typeOptionsプロパティを使用して、各フィールド タイプで使用可能なオプションを構成します。 たとえば、選択フィールドに表示されるオプションを設定します。ブーストはフィールドごとの数値ブースト値を設定します。フォーマットは 許容される日付フォーマット を決定します (例:yyyyMMddHHmmss)。nullableは null 値を渡すことができるかどうかを設定します。オプションは選択フィールドのオプションを設定します。必須は、構成に値が必須かどうかを設定します。ステップは、数値またはスライダー フィールドの数値の増分または減分値を設定します。単位は数値フィールドの測定単位を設定します。unitSuffixは、単位付きの数値フィールドに表示される単位表記を設定します (たとえば、unitがkmの場合、unitSuffixをkmまたはキロメートルに設定できます)。