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

Convenções da API do Elasticsearch

A interface de programação de aplicativos da Web (API) é um conjunto de chamadas de função ou outras instruções de programação, usadas para acessar componentes de software específicos de um aplicativo web específico. Por exemplo, o Facebook API ajuda os desenvolvedores a criar aplicativos acessando dados do Facebook ou outras funcionalidades; pode ser a data de nascimento ou a atualização de status.

O Elasticsearch oferece uma API REST, que pode ser acessada via HTTP. O Elasticsearch usa algumas convenções, que discutiremos agora.

Múltiplos índices

A maioria das operações da API, principalmente busca e outras operações, são direcionadas a um ou mais índices. Isso ajuda os usuários a realizarem uma única consulta e pesquisarem em várias posições ou em todos os dados disponíveis. Muitos símbolos diferentes são usados para executar operações em vários índices. Vamos discutir alguns deles neste capítulo.

Símbolos separados por vírgula

POST /index1,index2,index3/_search

Corpo da Requisição

{
   "query":{
      
         "query":"any_string"
      }
   }
}

Resposta

De index1, index2, index3O objeto JSON contém any_string.

_all Palavras-chave de todos os índices

POST /_all/_search

Corpo da Requisição

{
   "query":{
      
         "query":"any_string"
      }
   }
}

Resposta

Objetos JSON de todos os índices, que contêm any_string.

Caracteres curingas(*,+,–)

POST /*/_search

Corpo da Requisição

{
   "query":{
      
         
      }
   }
}

Resposta

Objeto JSON vindo de todos os índices que começam com escolas que contêm CBSE.

Além disso, você também pode usar o seguinte código-

POST /*,-schools_gov /_search

Corpo da Requisição

{
   "query":{
      
         
      }
   }
}

Resposta

O objeto JSON vem de todos os índices começando com “school”, mas não dos índices school_gov e inclui índices com CBSE.

Além disso, existem alguns parâmetros de consulta de URL-

  • ignore_unavailable−Se um ou mais índices (index(es)) não existirem na URL do index, não ocorrerá erro ou a operação será interrompida. Por exemplo, o índice school existe, mas book_shops não existe.

POST /*/_search

Corpo da Requisição

{
   "query":{
      
         
      }
   }
}

Corpo da Requisição

{
   
      
         
         
         
      }],
      
      
      
   404
}

Considere o seguinte código-

POST /*/

Corpo da Requisição

{
   "query":{
      
         
      }
   }
}

Resposta (sem erro)

Objeto JSON vindo de todos os índices que começam com escolas que contêm CBSE.

allow_no_indices

trueSe a URL com curinga não tiver índice, o valor deste parâmetro impedirá o erro. Por exemplo, não há índice começando com schools_pri-

POST /schools_pri*/

Corpo da Requisição

{
   "query":{
      "match_all":{}
   }
}

Resposta (sem erro)

{
   "took":1
   
}

expand_wildcards

Este parâmetro determina se o curinga deve ser expandido para índice aberto ou fechado, ou se ambos devem ser executados. O valor deste parâmetro pode ser aberto, fechado ou vazio.

Por exemplo, fechar o índice da escola-

POST /schools/

Resposta

Considere o seguinte código-

POST /*/

Corpo da Requisição

{
   "query":{
      "match_all":{}
   }
}

Resposta

{
   
      
         
      }],
      
   }403
}

Suporte matemático de datas e horas no nome do índice

O Elasticsearch oferece a função de busca de índices com base em data e hora. Precisamos especificar a data e hora em um formato específico. Por exemplo, accountdetail-2015.12.30, o índice armazenará2015ano12mês30 dia, detalhes do banco de conta. Pode ser executada operações matemáticas para obter detalhes específicos de data ou intervalo de data e hora.

o formato do nome do índice de matemática de data-

<static_name{date_math_expr{date_format|time_zone}}>
/<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search

static_name é parte de uma expressão e permanece inalterada em cada índice matemático de data (como detalhes do cliente). date_math_expr contém expressões matemáticas, que são como now-2d será determinado dinamicamente como a data e a hora. date_format contém o formato para escrever a data em índices, como YYYY.MM.dd. Se hoje for2015ano12mês30 dia, então <accountdetail- {now-2d {YYYY.MM.dd}}>retornará accountdetail-2015.12.28。

expressãopode ser interpretado como
<accountdetail-{now-d}>accountdetail-2015.12.29
<accountdetail-{now-M}>accountdetail-2015.11.30
<accountdetail-{now{YYYY.MM}}>accountdetail-2015.12

Agora, vamos ver algumas opções comuns fornecidas pelo Elasticsearch que podem ser usadas para obter respostas em formatos específicos.

Resultados formatados

Podemos adicionar parâmetros de consulta da URL (ou seja, pretty = true) para obter uma resposta em objeto JSON bem formatado.

POST /schools/_search?pretty = true

Corpo da Requisição

{
   "query":{
      "match_all":{}
   }
}

Resposta

……………………..
{
   "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0,
   "_source":{
      "name":"Central School", "description":"CBSE Affiliation",
      "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115",
      "location": [31.8955385, 76.8380405], "fees":2000,
      "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5"
   }
}
………………….

Saída legível por humanos

Esta opção pode alterar a forma de exibir a estatística de resposta para formato legível por humanos (se human = true) ou formato legível por computador (se human = false). Por exemplo, se human = true, então distance_kilometer = 20KM; se human = false, então distance_meter = 20000, neste caso, é necessário que outro programa computacional use a resposta.

Filtragem de Resposta

Ao adicioná-las ao parâmetro field_path, podemos filtrar a resposta para menos campos. Por exemplo:

POST /schools/_search?filter_path = hits.total

Corpo da Requisição

{
   "query":{
      "match_all":{}
   }
}

Resposta

{"hits":{"total":3}}