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

DSL de Consulta do Elasticsearch

No Elasticsearch, a pesquisa é feita usando consultas baseadas em JSON. A consulta é composta por duas frases-

  • Frases de consulta folhas — essas frases são coincidências, termos ou intervalos, que procuram valores específicos em campos específicos.

  • Frases de consulta compostas — essas consultas são combinações de frases de consulta folhas e compostas, usadas para extrair informações necessárias.

O Elasticsearch suporta uma grande variedade de consultas. As consultas começam com uma palavra-chave de consulta, seguidas por um objeto JSON que contém condições e filtros. A seguir, são descritas diferentes tipos de consultas.

Consulta que coincide com tudo

Esta é a consulta mais básica; ela retorna todo o conteúdo, e a pontuação de cada objeto é1.0。

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc./schools
{
   "query":{
      "match_all":{}
   }
}

Ao executar o código acima, obtemos os seguintes 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": ""
            }
         }
      }
   }
}

Consulta de conteúdo completo

Essas consultas são usadas para buscar conteúdo completo, como capítulos ou artigos de notícias. A consulta depende do analisador associado ao índice ou documento específico. Nesta seção, discutiremos os diferentes tipos de consultas de conteúdo completo.

Consulta de correspondência

Esta consulta compara texto ou frases com os valores de um ou mais campos.

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc.*/schools
{
   "query":{
      "match": {
         "rating":"4.5"rating": ""
      }
   }
}

Após executar o código acima, obtemos a seguinte resposta:

{
   "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 comparação múltipla

Esta consulta compara texto ou frases com um ou mais campos.

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc.*/schools
{
   "query":{
      "multi_match": {
         "query": "paprola"
         "fields": ["city", "state"]
      }
   }
}

Após executar o código acima, obtemos a seguinte resposta:

{
   "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 string de consulta

Esta consulta usa o analisador de consulta e a palavra-chave query_string.

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc.*/schools
{
   "query":{
      "query_string":{
         "query":"beautiful"
      }
   }
}

Após executar o código acima, obtemos a seguinte resposta:

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

Consulta de nível de palavra

Essas consultas tratam principalmente dados estruturados, como números, datas e enumerações.

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc.*/schools
{
   "query":{
      "term":{"zip":"176115}
   }
}

Após executar o código acima, obtemos a seguinte resposta:

……………………………..
"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 intervalo

Esta consulta é usada para encontrar objetos com valores dentro de um intervalo específico. Para isso, precisamos usar operadores, como-

  • gte −maior ou igual a

  • gt −maior que

  • lte −menor ou igual a

  • lt −menor que

Observar o código fornecido a seguir-

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc.*/schools
{
   "query":{
      "range":{
         "rating":{
            "gte":3.5
         }
      }
   }
}

Após executar o código acima, obtemos a seguinte resposta:

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

""-

  • Existem outros tipos de consultas de nível de termo, como Consultas de existência

  • −Se o valor de algum campo não for vazio. Consultas de ausência

  • −Isso é o oposto da consulta de existência, que busca objetos sem campo específico ou valor vazio. Consultas de coringa ou regexp

−Esta consulta usa expressões regulares para encontrar padrões no objeto.

Consultas compostas/Estas consultas são conjuntos de consultas diferentes, que são combinadas usando operadores booleanos (por exemplo, e)

POST /ou, ou não) ou combinar diferentes índices ou que contenham chamadas de funções, etc./schools
{
   _search
      "query": {
         "bool": {
            "must": {
         }
         "term": {"state": "UP"}}
            "filter": {22"term": {"fees": ""}
         }
         "minimum_should_match": "00"} 1,
         "boost": : 1.0
      }
   }
}

Após executar o código acima, obtemos a seguinte resposta:

{
   "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 geográficas

Estas consultas processam localizações geográficas e objetos geográficos. Estas consultas ajudam a encontrar objetos geográficos próximos a escolas ou qualquer outra localização geográfica. Você precisa usar o tipo de dados geográficos.

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

Após executar o código acima, obtemos a seguinte resposta:

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

Agora, publicaremos os dados no índice criado acima.

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

Após executar o código acima, obtemos a seguinte resposta:

{
   "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": "Capítulo Um, Londres, Reino Unido",
            "location": {
               "type": "point",
               "coordinates": [
                  11.660544,
                  57.800286
               }
            }
         }
      }
   }