構造体の 2 つのフィールドに対してカスタム フィルター ウィジェットを使用して日付範囲クエリを実行する

問題

  • 2 つの ddm-date フィールドを持つカスタム Web コンテンツ構造があります。 カスタム フィルター ウィジェットを使用して、これら 2 つのフィールド間の日付の範囲を検索およびフィルター処理したいと考えています。

Environment

  • Liferay DXP 7.3

解決策


重要な注意: 「カスタム フィルター」 ウィジェットを使用する代わりに、 「ブループリントの検索」 機能を利用することも可能です。これにより、Elasticsearch クエリを Liferay 検索機能に直接適用できます。詳細については、次を参照してください。


ElasticSearch を使用して、次のようなネストされたクエリを作成する必要があります。

{
"query": {
"nested": {
"path": "ddmFieldArray",
"query": {
"bool": {
"must": [{
"range": {
"ddmFieldArray.ddmFieldValueKeyword_en_US_String_sortable": {
"gte": "2021-07-01",
"lt": "2021-12-28"
}
}
}]
}
},
"score_mode": "avg"
}
}
}

Liferay Custom Filter Widget を使用して、以下の構造を作成する必要があります。

1 つの親フィルターと 2 つの子フィルター。

例ごと:

最初の日付フィールド:

フィルタリングするフィールドの名前: ddm__keyword__38106__date1_en_US

日付範囲 [2021-07-01 ~ 2021-12-28] 両方の日付を含む

  • 最初のカスタム フィルター ウィジェット: (親)
    • フィルタ フィールド: ddmFieldArray
    • フィルター値: (空)
    • フィルタ クエリ タイプ: ネスト
    • 発生: フィルタ
    • クエリ名: nested_query
    • 親クエリ名: (空)
  • 秒のカスタム フィルター: (最初の子)
    • フィルタ フィールド: ddmFieldArray.ddmFieldName
    • フィルター値: ddm__keyword__38106__date1_en_US
    • フィルタ クエリ タイプ: 一致
    • 発生: フィルタ
    • クエリ名: (空)
    • 親クエリ名: nested_query
  • 3 番目のカスタム フィルター: (2 番目の子)
    • フィルター フィールド: ddmFieldArray.ddmFieldValueKeyword_en_US_String_sortable
    • フィルタ値: [2021-07-01 2021-12-28]
    • フィルタ クエリ タイプ: 範囲
    • 発生: フィルタ
    • クエリ名: (空)
    • 親クエリ名: nested_query

2 番目の日付フィールド:

フィルタリングするフィールドの名前: ddm__keyword__38106__date2_en_US

日付範囲 [2021-07-01 ~ 2021-12-28] 両方の日付を含む

  • 最初のカスタム フィルター ウィジェット: (親)
    • フィルタ フィールド: ddmFieldArray
    • フィルター値: (空)
    • フィルタ クエリ タイプ: ネスト
    • 発生: フィルタ
    • クエリ名: nested_query_2
    • 親クエリ名: (空)
  • 秒のカスタム フィルター: (最初の子)
    • フィルタ フィールド: ddmFieldArray.ddmFieldName
    • フィルター値: ddm__keyword__38106__date2_en_US
    • フィルタ クエリ タイプ: 一致
    • 発生: フィルタ
    • クエリ名: (空)
    • 親クエリ名: nested_query_2
    • 3 番目のカスタム フィルター: (2 番目の子)
      • フィルター フィールド: ddmFieldArray.ddmFieldValueKeyword_en_US_String_sortable
      • フィルタ値: [2021-07-01 2021-12-28]
      • フィルタ クエリ タイプ: 範囲
      • 発生: フィルタ
      • クエリ名: (空)
      • 親クエリ名: nested_query_2

追加情報

この記事は役に立ちましたか?
3人中3人がこの記事が役に立ったと言っています