Continuando con el capítulo anterior sobre recuperación básica, en el blog del capítulo anterior, inserté muchos datos en ES, y luego realizaré algunas operaciones avanzadas en base a los datos anteriores.
La consulta avanzada de ES tiene su propio lenguaje- QueryDSL
ES proporciona un DSL de estilo JSON que puede ejecutar consultas, llamado QueryDSL. Este lenguaje es muy completo, pero un poco más complicado. Experimentemos primero.
Puede ver que las consultas de QueryDSL envían solicitudes a través de obtener y llevar datos json., Estos datos json contienen nuestras condiciones de consulta, y su formato de sintaxis es el siguiente
{
查询名1:{
条件1:值1
},
查询名2:{
条件2:值2
},
.....
}
búsqueda de coincidencia de segmentación de palabras coincidentes
La consulta de coincidencia realizará una coincidencia de segmentación de palabras en las condiciones de recuperación, siempre que los datos coincidan con uno de los caracteres, se consultará y, finalmente, se devolverá de acuerdo con la puntuación.
# 语法格式
# 查询每个字段值为多少的数据,支持模糊查询
GET bank/_search # 请求体
{
"query": {
# 查询
"match": {
# 匹配查询
"FIELD": "TEXT" # 字段:值
}
}
}
match_phrase concordancia de frase
match_phrase recuperará el valor de la condición de recuperación como un todo
GET bank/_search
{
"query": {
"match_phrase": {
"FIELD": "PHRASE"
}
}
}
coincidencia de múltiples campos de múltiples coincidencias
Consultar datos que contengan un determinado valor en varios campos y realizar la comparación de segmentación de palabras en las condiciones de la consulta
GET bank/_search
{
"query": {
"multi_match": {
"query": "", # 查询条件
"fields": [] # 匹配的字段
}
}
}
consulta compuesta bool
La consulta compuesta puede combinar varias condiciones de consulta, lo que equivale a la condición y en mysql, y todas las condiciones deben cumplirse al realizar la consulta.
GET bank/_search
{
"query": {
"bool": {
"must": [ # 必须满足这个条件
{
}
],
"must_not": [ # 必须不是这个条件
{
}
],
"should": [ # 可以包含这个条件
{
}
]
.....
}
}
consulta de coincidencia de término
El término y la coincidencia pueden hacer una coincidencia exacta. La diferencia es que el término no puede realizar una consulta aproximada. El término consultará el valor de la condición de recuperación en su conjunto. Sin embargo, ES tiene problemas de análisis de datos al almacenar texto, lo que equivale al almacenamiento de segmentación de palabras. Por lo tanto, el término no puede encontrar datos cuando se consultan varios textos. Se recomienda utilizar el término cuando se realizan consultas que no son de texto.
GET bank/_search
{
"query": {
"term": {
"FIELD": {
"value": "VALUE"
}
}
}
}
agregaciones
La agregación proporciona la capacidad de agrupar y extraer datos de los datos. El método de agregación más simple es aproximadamente equivalente a las funciones de agregación sql group by y sql.
GET bank/_search
{
"aggs": {
"NAME": {
"AGG_TYPE": {
}
}
}
}
Ejemplo 1: Busque la distribución por edad y la edad promedio de todas las personas cuya dirección contenga mill.
Ejemplo 2: Agregue por edad y solicite el salario promedio de estos grupos de edad.
Ejemplo 3: Consulte todas las distribuciones de edad y el promedio de M y F en el grupo de edad. Salario y salario medio global