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>"
}
}