English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DSL 查询 Elasticsearch

En Elasticsearch, la búsqueda se realiza utilizando consultas basadas en JSON. Las consultas consisten en dos subconjuntos-

  • Conjuntos de subconsultas de hoja—Estas subconsultas son coincidencias, términos o rangos que buscan valores específicos en un campo específico.

  • Conjuntos de consultas compuestas—Estas consultas son combinaciones de subconjuntos de consulta de hoja y consultas compuestas, utilizadas para extraer la información necesaria.

Elasticsearch admite una gran cantidad de consultas. Las consultas comienzan con una palabra clave de consulta y luego incluyen condiciones y filtros en la forma de un objeto JSON. A continuación, se describe diferentes tipos de consultas.

Coincidencia de consulta con todos los campos

Esto es la consulta más básica; devuelve todo el contenido, con una puntuación de cada objeto1.0。

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí./schools
{
   "query":{
      "match_all":{}
   }
}

Al ejecutar el código anterior, obtenemos los siguientes resultados-

{
   "took": 7,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 2,
         "relation": "eq"
      }
      "max_score": 1.0,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "5",
            "_score": 1.0,
            "_source": {
               "name": "Central School",
               "description": "CBSE Affiliation",
               "street": "Nagan",
               "city": "paprola",
               "state": "HP",
               "zip": "176115",
               "location": [
                  31.8955385,
                  76.8380405
               "fully computerized"
               "fees" : 22"fees":
               00,
                  "Senior Secondary",
                  "beautiful campus"
               "fully computerized"
               ],3.3"rating": ""
            }
         }
         {
            "_index": "schools",
            "_type": "school",
            "_id": "4",
            "_score": 1.0,
            "_source": {
               "name": "City Best School",
               "description": "ICSE",
               "street": "West End",
               "city": "Meerut",
               "state": "UP",
               "zip": "250002",
               "location": [
                  28.9926174,
                  77.692485
               "fully computerized"
               "fees" : 35"fees":
               00,
                  "tags": [
               "fully computerized"
               ],4.5"rating": ""
            }
         }
      }
   }
}

Consultas de texto completo

Estas consultas se utilizan para buscar en el texto completo, como capítulos o artículos de noticias. La consulta depende del analizador asociado con el índice o documento específico. En esta sección, discutiremos diferentes tipos de consultas de texto completo.

Consulta de coincidencia

Esta consulta coincidirá el texto o la frase con los valores de uno o más campos.

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí.*/schools
{
   "query":{
      "match": {
         "rating":"4.5"rating": ""
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 44,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      }
      "max_score": 0.47000363,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "4",
            "_score": 0.47000363,
            "_source": {
               "name": "City Best School",
               "description": "ICSE",
               "street": "West End",
               "city": "Meerut",
               "state": "UP",
               "zip": "250002",
               "location": [
                  28.9926174,
                  77.692485
               "fully computerized"
               "fees" : 35"fees":
               00,
                  "tags": [
               "fully computerized"
               ],4.5"rating": ""
            }
         }
      }
   }
}

Consulta de comparación múltiple

Esta consulta coincidirá con el texto o la frase en uno o más campos.

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí.*/schools
{
   "query":{
      "multi_match": {
         "query": "paprola"
         "fields": [  "city",  "state"  ]
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 12,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      }
      "max_score": 0.9808292,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "5",
            "_score": 0.9808292,
            "_source": {
               "name": "Central School",
               "description": "CBSE Affiliation",
               "street": "Nagan",
               "city": "paprola",
               "state": "HP",
               "zip": "176115",
               "location": [
                  31.8955385,
                  76.8380405
               "fully computerized"
               "fees" : 22"fees":
               00,
                  "Senior Secondary",
                  "beautiful campus"
               "fully computerized"
               ],3.3"rating": ""
            }
         }
      }
   }
}

Consulta de cadena de consulta

Esta consulta utiliza el analizador de consultas y la clave query_string.

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí.*/schools
{
   "query":{
      "query_string":{
         "query":"beautiful"
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 60,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
      "value": 1,
      "relation": "eq"
   }
………………………………….

Consulta de nivel de palabra

Estas consultas se utilizan principalmente para manejar datos estructurados, como números, fechas y enumeraciones.

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí.*/schools
{
   "query":{
      "term":{"zip":"176115"}
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

……………………………..
"hits": [
   {
      "_index": "schools",
      "_type": "school",
      "_id": "5",
      "_score": 0.9808292,
      "_source": {
         "name": "Central School",
         "description": "CBSE Affiliation",
         "street": "Nagan",
         "city": "paprola",
         "state": "HP",
         "zip": "176115",
         "location": [
            31.8955385,
            76.8380405
         "fully computerized"
      }
   }
}   
…………………………………………..

Consulta de rango

Esta consulta se utiliza para encontrar objetos con valores en un rango determinado. Para esto, necesitamos usar operadores, como-

  • gte −más o igual que

  • gt −más que

  • lte −menos o igual que

  • lt −menos que

Por ejemplo, observe el siguiente código-

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí.*/schools
{
   "query":{
      "range":{
         "rating":{
            "gte":3.5
         }
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 24,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      }
      "max_score": 1.0,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "4",
            "_score": 1.0,
            "_source": {
               "name": "City Best School",
               "description": "ICSE",
               "street": "West End",
               "city": "Meerut",
               "state": "UP",
               "zip": "250002",
               "location": [
                  28.9926174,
                  77.692485
               "fully computerized"
               "fees" : 35"fees":
               00,
                  "tags": [
               "fully computerized"
               ],4.5"rating": ""
            }
         }
      }
   }
}

""-

  • También existen otros tipos de consultas a nivel de términos, como Consultas de existencia

  • −Si el valor de algún campo no está vacío. Consultas de ausencia

  • −Este es exactamente lo contrario de la consulta de existencia, que busca objetos sin campo específico o valor vacío. Consultas de comodín o regexp

−Esta consulta utiliza expresiones regulares para encontrar patrones en los objetos.

Consultas compuestas/Estas consultas son conjuntos de consultas diferentes, que se utilizan conjuntamente mediante operadores booleanos (por ejemplo, y

POST /o, o bien) o para diferentes índices o que tienen llamadas a funciones, entre otros, que se combinan entre sí./schools
{
   _search
      "query": {
         "bool": {
            "must": {
         }
         "term": {    "state": "UP"}
            "filter": {22"term": {    "fees": ""
         }
         "minimum_should_match": "00"} 1,
         "boost": 1.0
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 6,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 0,
         "relation": "eq"
      }
      "max_score": null,
      "hits": [    ]
   }
}

Consultas geoespaciales

Estas consultas procesan ubicaciones geográficas y objetos geográficos. Estas consultas ayudan a encontrar escuelas o cualquier otro objeto geográfico cercano a una ubicación geográfica. Necesita usar el tipo de datos geoespaciales.

PUT /geo_example
{
   "mappings": {
      "properties": {
         "location": {
            "type": "geo_shape"
         }
      }
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{    "acknowledged": true,
   "shards_acknowledged": true,
   "index": "geo_example"
}

Ahora, publicaremos los datos en el índice creado anteriormente.

POST /geo_example/_doc?refresh
{
   "name": "Capítulo Uno, Londres, Reino Unido",
   "location": {
      "type": "point",
      "coordinates": [11.660544, 57.800286}
   }
}

Después de ejecutar el código anterior, obtenemos la respuesta siguiente:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   }
   "hits": {
      "total": {
         "value": 2,
         "relation": "eq"
      }
      "max_score": 1.0,
      "hits": [
         "_index": "geo_example",
         "_type": "_doc",
         "_id": "hASWZ2oBbkdGzVfiXHKD
         "_score": 1.0,
         "_source": {
            "name": "Chapter One, London, UK",
            "location": {
               "type": "point",
               "coordinates": [
                  11.660544,
                  57.800286
               }
            }
         }
      }
   }