エレメントを作る
検索ブループリントに同梱されている システムエレメントはたくさんある。 どのシステム要素もあなたのニーズを満たさない場合、独自の検索ブループリント要素を作成する多くの方法があります:
- Custom JSON Element を使用して、Search Blueprints Query Builder から Element を作成します。
- Add Element source editor を使用すると、便利なプレビュー機能やシステム内の定義済みテンプレート変数のリストを含む、より堅牢なエレメントエディタを使ってエレメントを記述することができます。
- システムエレメント を複製して、独自のカスタムエレメントを開発しましょう。
- Elasticsearch query DSL を使い慣れていて、Elasticsearchクエリに基づいて素早く要素を作成する必要がある場合は、 Paste Any Elasticsearch Query system Element を使ってください。
カスタム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 セクションを必要とせず、要素で使用できる定義済みのテンプレート変数を多用しません。 より複雑なケースでは、 Element source editor を使用してください。
例えば、以下のExclude Journal Articles要素は、Custom JSON要素に基づいています。 これは、 exclude.journal_articles というパラメータが trueである場合にのみ、エレメントのクエリーが適用されるように条件を追加するものである。 このクエリは、結果がウェブコンテンツ記事の 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"
}
}
この要素は、ブループリントのパラメータ構成を使用して追加できるカスタム変数に依存します。 ブループリントへのカスタム変数の追加については、 Search Blueprints Configuration Reference を参照してください。
要素ソース・エディターの追加
エレメンツをより強固に編集することができます。 Search Blueprint の Elements セクションから、 Add(
) をクリックします。
要素に名前を付け、 Create をクリックする。 要素ソース・エディターが表示され、エディターの左側のペインに定義済み変数が表示されます。 JSONエディターに入力すると、オートコンプリートによって利用可能なプロパティが表示されます。 利用可能なJSONプロパティをさらに理解するには、 Understanding the Schema を参照。

UIコンフィギュレーションのオプションは、エレメントJSONの uiConfiguration プロパティで定義されます。 クエリビルダで要素の設定ウィンドウをプレビューするには、 Preview(キャンセルボタンの隣)リンクをクリックします。

定義済み変数
エレメント・ソース・エディターのエレメントに定義済み変数を挿入するには、カーソルを希望の位置に置き、左側のサイドバーで変数をクリックします。 カスタムJSON要素では、エディタに変数を直接入力する必要があります。
詳細は 定義済み要素変数リファレンス を参照。
要素スキーマを理解する
要素スキーマ](#understanding-the-element-schema)は変更可能です。 Liferayのバージョン間でスキーマが変更されると、古いエレメントのJSONのインポートに失敗することがあります。
検索ブループリント要素のスキーマは、 sxp-query-element.schema.json ファイルで定義されています。 REST API Explorerにアクセスできるユーザーは、スキーマをより便利に閲覧できる。 Liferay にログインした状態で、次のサイトにアクセスします。
POST /v1.0/sxp-blueprints エンドポイントエントリーを展開します。 下にスクロールして、 Schema リンク(Example Value リンクの隣)をクリックします。

システム要素の構文を調べて、スキーマ要素を使用して要素がどのように構築されるかをよりよく理解する。
elementDefinition および title_i18n。 elementDefinition は、 category と、 configuration → queryConfiguration プロパティを含まなければならない:
{
"elementDefinition": {
"category": "custom",
"configuration": {
"queryConfiguration": {}
}
},
"title_i18n": {
"en_US": "Custom JSON Element"
}
}
タイトルフィールドで、要素のタイトルテキストを必要な言語数だけ設定する。
要素の作成 elementDefinition
elementDefinition が、作業の大部分を行う場所である。 そのプロパティには、 category、 configuration、 icon、 uiConfigurationがある。
category 要素の振る舞いを分類する文字列を提供します。 match, boost, conditional, filter, hide, or customを指定する。
configuration は queryConfiguration を提供し、queryEntries プロパティを通して、投稿するクエリ句を保持する。
icon 要素に使用するアイコンを文字列で指定します。 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
}
}
]
}
}
Element コンフィギュレーションの定義
configuration プロパティは、 queryConfiguration → queryEntriesのネストされたプロパティを保持する。
queryEntries JSONに飛び込むと、プロパティ clauses, conditions, enabled, postFilterClauses, and rescoresを含むことができる。
- 上のスニペットは、
節(要素の配列) を使用して、ブループリント主導の検索にクエリ節を追加する Element を示しています。クエリに加えて、additive、boost、content、disabled、field、name、occur、parent、type、またはvalueproperties を追加できる。 条件は、ブーリアン・チェックを提供する。 trueの場合、指定された節は検索クエリに含まれ、falseの場合、それらは除外される。- エレメントを無効にするには、
enabled(デフォルトではtrue)をfalseに設定します。 postFilterClausesを追加する(節要素の配列として)。additive,boost,content,disabled,field,name,occur,parent,query,type, orvalueproperties.rescoresを追加して、クエリの結果の関連性スコアを再計算する。query,queryWeight,rescoreQueryWeight,scoreMode, andwindowSizeを指定する。 詳細は Elasticsearch ドキュメント を参照してください。
uiConfiguration プロパティは、ネストされたプロパティ fieldSet と fieldを保持する。
UIコンフィギュレーションの各フィールドに追加できるコンフィギュレーション・プロパティがいくつかあります:
defaultValueを使って、フィールドの初期値を入力する。helpTextと入力すると、ブループリント UI にフィールドのヘルプ テキストが表示されます。- 人間が読める
ラベルを入力する。 - クエリ句にフィールド値を渡すときなど、エレメント内の他の場所でフィールドを参照するために使用できる
名を入力します:${configuration.name}。 - フィールドの
タイプを設定する。<code>date , fieldMapping , fieldMappingList (利用可能なフィールドのリスト、ロケールとフィールドブースト付き), itemSelector , json , keywords , multiselect , number , select , slider , and text から選択します。</code>`` typeOptionsプロパティを使用して、各タイプのフィールドで利用可能なオプションを設定します。 例えば、セレクト・フィールドに表示されるオプションを設定する。boostフィールドごとに数値ブースト値を設定する。フォーマットは、 受け入れ可能な日付フォーマット を決定する(例えば、yyyyMMddHHmmss)。nullablenull 値を渡せるかどうかを設定します。optionsセレクト・フィールドのオプションを設定します。requiredコンフィギュレーションが値を持たなければならないかどうかを設定します。step数値またはスライダー・フィールドの数値の増減を設定します。unit数値フィールドの測定単位を設定する。unitSuffixは、単位を持つ数値フィールドに表示する単位表記を設定します(例えば、unitがkmの場合、unitSuffixをkmまたはkilometersと設定できます)。