day115-mall business-search service-search DSL test-query part

1. Revisión de DSL

Han pasado dos o tres meses desde la última vez que llamé a DSL, inténtalo de nuevo esta vez

¿Cuál es la consulta de la siguiente manera? La consulta es un producto cuyo título no contiene acciones de Huawei y cuya identificación de marca es 6 u 8.

Punto de conocimiento: la consulta combinada usa bool, coincide para buscar después de la segmentación de palabras, el término usa una palabra clave completa para buscar sin segmentación de palabras, el filtro no calcula ninguna puntuación y no se preocupa por el problema de clasificación devuelto, por lo que

Será un poco más eficiente de lo que debe

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

2. El atributo incrustado es una consulta condicional.

Cuando agregamos la siguiente parte seleccionada, encontramos que el resultado de la consulta está vacío, por qué, porque el atributo está incrustado

Cuando se utilizan atributos incrustados como condición

Buscamos de la siguiente manera, el valor de la ruta es el nombre del atributo

La buena modificación es la siguiente

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. Ordenar

Agregue un objeto de clasificación después del objeto de consulta, especifique el nombre del objeto y el orden ascendente, puede especificar varios objetos de clasificación

4. Rango de precios

5. Paginación

Empiece desde 0, tome los dos primeros registros

6. Título destacado

Resalte y empaque una parte del contenido, aquí es para hacer que la fuente sea roja

Puede ver que la palabra Huawei a la derecha está envuelta

7. La declaración final de DSL

Básicamente, se corresponde con las condiciones de consulta de nuestro artículo anterior, por lo que podemos agregar condiciones de consulta básicas y DSL básico.La siguiente sección hablará sobre el análisis de agregación, que es similar a la agrupación en 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>"
  }
}

 

Supongo que te gusta

Origin blog.csdn.net/JavaCoder_juejue/article/details/115363756
Recomendado
Clasificación