API Elastic
API Search
O acesso aos dados disponibilizados na API será feito pela URL:
- Postman
- Python
- R
- Abra o Postman e clique em "New Request".
- Digite a URL: https://api.datajud.cnj.jus.br/view-processos-sigilo-*/_search
- Selecione a aba "Authorization" e clique em "No Auth" e selecione "Basic Auth"
- Digite o seu username e password
- Clique em "Body" selecione "raw". Insira o corpo da solicitação JSON conforme o exemplo abaixo:
{
"query": {
"match": {
"match_all": {}
}
}
}
- Clique em "Send"
import requests
import json
url = 'https://api.datajud.cnj.jus.br/view-processos-sigilo-*/_search'
username = 'coloque seu username'
password = 'coloque sua username'
data = json.dumps({
"query": {
"match_all": {}
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, auth=(username, password), headers=headers, data=data)
if response.status_code == 200:
print(response.json())
else:
print("Erro:", response.status_code)
library(httr)
url <- "https://api.datajud.cnj.jus.br/view-processos-sigilo-*/_search"
username <- 'coloque seu username'
password <- 'coloque sua senha'
headers <- c(
'Content-Type' = 'application/json'
)
body <- '{
"query": {
"match_all": {}
}
}'
res <- POST(url,
authenticate(username, password),
add_headers(headers),
body = body)
if (status_code(res) == 200) {
print(content(res))
} else {
print(paste("Erro:", status_code(res)))
}
Resposta
{
"took": 700,
"timed_out": false,
"_shards": {
"total": 239,
"successful": 239,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "gte"
},
"max_score": 1.0,
"hits": [
{
"_index": "processos-tre-df",
"_type": "_doc",
"_id": "TRE-DF_261_G1_14580_06000448920216070014",
"_score": 1.0,
"_source": {
"id": "TRE-DF_261_G1_14580_06000448920216070014",
"protocoloRN": "TRE-DF23986202208051659721768206",
"dadosBasicos": {
"polo": [
{
...
Pesquisa com paginação
Por padrão, as pesquisas na API do Elasticsearch retornam até 10 registros por solicitação. No entanto, é possível aumentar o número de registros retornados utilizando o parâmetro "size" de paginação dos registros. Esse parâmetro permite especificar quantos resultados devem ser retornados por página, variando de 10 até 10.000 registros por página.
Quando se tem uma necessidade de percorrer uma maior quantidade de resultados, é possível fazer uso do recurso "search_after". Esse recurso é prioritariamente recomendado para paginação de dados, pois permite que a API do Datajud continue a partir do ponto onde a última página parou, sem a necessidade de recarregar todos os resultados a cada nova página. O "search_after" é um ponteiro que aponta para o último registro retornado na página anterior e pode ser informado como parâmetro para a próxima solicitação, permitindo que a API retorne os resultados seguintes.
É importante ressaltar que a utilização do "search_after" não prejudica a performance da API na busca de grandes volumes de dados, pois permite que a API do Datajud execute consultas de forma mais eficiente, sem a necessidade de recarregar todos os resultados em cada página. Combinando o uso do parâmetro "size" com o "search_after", é possível percorrer grandes volumes de dados de forma eficiente e com baixo impacto no desempenho da API.
Para paginar os resultados utilizando o search_after, é necessário a utilização da ordenação (sort) dos dados utilizando o atributo “id” conforme exemplo abaixo:
{
"size": 100,
"query": {
"match_all": {}
},
"sort": [
{
"id.keyword": {
"order": "asc"
}
}
]
}
Após a primeira consulta, a resposta da API incluirá um array chamado "sort" que contém os valores do campo de ordenação para cada documento retornado. Esse array pode ser utilizado como o valor do parâmetro "search_after" na próxima consulta, juntamente com o parâmetro "size" que define a quantidade de documentos a serem retornados na próxima página.
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : null,
"hits" : [
{
"_index" : "processos-tre-df",
"_type" : "_doc",
"_id" : "TRE-DF_11526_G2_76581_06016544220186070000",
"_score" : null,
"_source" : {...}
"id" : "TRE-DF_11526_G2_76581_06016544220186070000",
"protocoloRN" : "TRE-DF40954202307051688577230673",
"dadosBasicos" : {
...
...
"sort" : [
"TRE-DF_11526_G2_76581_06016544220186070000"
]
}
Para buscar os próximos 100 processos, basta adicionar o parâmetro "search_after" na próxima consulta, utilizando o valor do campo “sort” do último documento retornado na página anterior conforme exemplo abaixo:
{
"size": 100,
"query": {
"match_all": {}
},
"sort": [
{
"id.keyword": {
"order": "asc"
}
}
],
"search_after": [
"TRE-DF_11526_G2_76581_06016544220186070000"
]
}
Observe que o valor do campo "search_after" é um array com os valores do campo de ordenação para o último documento retornado na página anterior. É importante lembrar que o "search_after" deve ser utilizado em conjunto com o "sort" e o "size" para garantir uma paginação eficiente dos resultados.