English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
POST /index1,index2,index3/_search
{ "query":{ "query":"any_string" } } }
De index1, index2, index3O objeto JSON contém any_string.
POST /_all/_search
{ "query":{ "query":"any_string" } } }
Objetos JSON de todos os índices, que contêm any_string.
POST /*/_search
{ "query":{ } } }
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
{ "query":{ } } }
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
{ "query":{ } } }
{ }], 404 }
Considere o seguinte código-
POST /*/
{ "query":{ } } }
Objeto JSON vindo de todos os índices que começam com escolas que contêm CBSE.
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*/
{ "query":{ "match_all":{} } }
{ "took":1 }
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/
Considere o seguinte código-
POST /*/
{ "query":{ "match_all":{} } }
{ }], }403 }
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ão | pode 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.
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
{ "query":{ "match_all":{} } }
…………………….. { "_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" } } ………………….
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.
Ao adicioná-las ao parâmetro field_path, podemos filtrar a resposta para menos campos. Por exemplo:
POST /schools/_search?filter_path = hits.total
{ "query":{ "match_all":{} } }
{"hits":{"total":3}}