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