day115-モールビジネス-検索サービス-検索DSLテスト-クエリ部分

1.DSLレビュー

前回DSLをノックしてから2、3ヶ月経ちましたが、今回はもう一度やり直してください

次のようなクエリは何ですか?クエリは、タイトルにHuaweiの在庫がなく、ブランドIDが6または8の製品です。

知識ポイント:結合クエリはブール値を使用し、一致して単語セグメンテーション後に検索し、用語はキーワード全体を使用して単語セグメンテーションなしで検索し、フィルターはスコアを計算せず、返される並べ替えの問題を気にしません。

必要以上に効率的になります

GET product/_search
{
  "query": {
  "bool": {
    "must": [
      {
        "match": {
          "skuTitle": "华为"
        }
      }
    ],
    "filter": [
    {
      "term": {
        "hasStock": "false"
      }
    },
    {
      "terms": {
        "brandId": [
          "6",
          "10"
        ]
      }
    }
    ]
  }
  }
}

2.埋め込み属性は条件付きクエリです

次の選択したパーツを追加すると、属性が埋め込まれているため、クエリ結果が空であることがわかります。

埋め込み属性を条件として使用する場合

次のように検索します。pathの値は属性名です。

良い変更は次のとおりです

GET product/_search
{
  "query": {
  "bool": {
    "must": [
      {
        "match": {
          "skuTitle": "华为"
        }
      }
    ],
    "filter": [
    {
      "term": {
        "hasStock": "false"
      }
    },
    {
      "terms": {
        "brandId": [
          "6",
          "10"
        ]
      }
    },{
        "nested": {
         "path": "attrs",
         "query": {
           "bool": {
             "must": [
               {
                 "term": {
                   "attrs.attrId": {
                     "value": "1"
                   }
                 }
               }
             ]
           }
         }
       }
    }
    ]
  }
  }
}

3.並べ替え

クエリオブジェクトの後に並べ替えオブジェクトを追加し、オブジェクト名と昇順を指定します。複数の並べ替えオブジェクトを指定できます

4.価格帯

5.ページ付け

0から開始し、最初の2つのレコードを取得します

6.タイトルの強調表示

コンテンツの一部を強調表示してパッケージ化します。フォントを赤にします。

右側のHuaweiという単語がまとめられていることがわかります

7.最後のDSLステートメント

基本的に、これは前の記事のクエリ条件に対応しているため、基本的なクエリ条件と基本的なDSLを追加できます。次のセクションでは、SQLでのグループ化に似た集計分析について説明します。

GET product/_search
{
  "query": {
  "bool": {
    "must": [
      {
        "match": {
          "skuTitle": "华为"
        }
      }
    ],
    "filter": [
    {
      "term": {
        "hasStock": "false"
      }
    },
    {
      "terms": {
        "brandId": [
          "6",
          "10"
        ]
      }
    },{
        "nested": {
         "path": "attrs",
         "query": {
           "bool": {
             "must": [
               {
                 "term": {
                   "attrs.attrId": {
                     "value": "1"
                   }
                 }
               }
             ]
           }
         }
       }
    },{
      "range": {
        "skuPrice": {
          "gte": 0,
          "lte": 4000
        }
      }
    }
    ]
  }
  },
  "sort": [
    {
      "skuPrice": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 2,
    "highlight": {
    "fields": {"skuTitle": {}},
    "pre_tags": "<b style='color:red'>",
    "post_tags": "</b>"
  }
}

 

おすすめ

転載: blog.csdn.net/JavaCoder_juejue/article/details/115363756