Busca monitorados

Aviso

Em construção.

Realiza a busca textual nos dados dos processos monitorados, seus anexos e entidades (locais, pessoas, organizações) envolvidas.

Disponibilizamos três indices: processo_anexo, processo e entidade.

Os critérios de pesquisa são especificados como JSON no corpo da solicitação HTTP POST. API responde de forma síncrona, também na sintaxe JSON.

A sintaxe de pesquisa é baseada na DSL padrão do Elasticsearch. Isso fornece um caminho de migração mais fácil em um estágio posterior do projeto, se a decisão de hospedar a pesquisa internamente por um cliente for feita. O código do cliente é programado para funcionar com uma API padrão do setor. Além disso, muitas das lições de criação de APIs de pesquisa e recuperação de conteúdo já fazem parte da API DSL / REST do Elasticsearch, portanto, elas estão sendo aproveitadas aqui e não são reinventadas.

Principais recursos de pesquisa:

  • termos isolados ou de frases, expressões regulares, curingas (qualquer expressão Lucene)
  • operadores booleanos (AND, OR, exclusão de termos, combinações complexas)
  • filtrar em campos de metadados como “capitalSocial”, “localizacaoBairroDistrito”, etc
  • pesquisas fuzzy / aproximadas (Levenshtein / edit distance algorithms)
  • sugestão de termos similares (“Você quis dizer…” ou “mais assim…”). Veja alguns exemplos da API.

Os resultados da pesquisa podem ser retornados com:

  • termo de pesquisa configurável realçar (tamanho, tag), mostrando o contexto em cada documento correspondente
  • faceting/agregação/sumarização por qualquer campo
  • As pesquisas podem ser feitas em qualquer tipo de campo: texto puro, numérico, data. O escopo de pesquisa (quais campos pesquisar) também é configurável. Qualquer campo dos documentos correspondentes (configuráveis por consulta) pode ser retornado junto com os resultados.
POST https://op.digesto.com.br/api/proc_search/(index)

Realiza busca textual com os parâmetros informados.

Exemplo de chamada:

O exemplo abaixo faz a busca pela palavra “genebra” dentro dos anexos dos processos monitorados pela user_company do usuário atual. Ele traz também agregações dos números de processos e entidades mencionadas nos resultados.

A busca coloca peso 2 para o campo nome das partes em relação ao conteúdo (peso 1), retorna uma contagem (histograma) dos números de processos com resultados (para mostrar na tela à esquerda da busca por exemplo) e também com sugestão automática de termos parecidos.

POST https://op.digesto.com.br/api/proc_search/processo_anexo_181/_search HTTP/1.1
Content-Type: application/json

{
  "from": 0,
  "size": 8,
  "query": {
    "multi_match": {
      "query": "genebra",
      "fuzziness" : "AUTO",
      "prefix_length" : 2,
      "fields": [
        "partes^2",
        "conteudo"
      ],
      "operator": "and"
    }
  },
  "aggs": {
    "Publicado em": {
      "date_histogram": {
        "field": "publicadoEm",
        "interval": "1M",
        "format": "MM/yyyy"
      }
    },
    "Processo.Número do processo": {
      "nested": {
        "path": "processo"
      },
      "aggs": {
        "Número do processo": {
          "terms": {
            "field": "processo.numero",
            "size": 12
          }
        }
      }
    },
    "Pessoas.Pessoas mencionadas": {
      "nested": {
        "path": "entities"
      },
      "aggs": {
        "Pessoas mencionadas": {
          "terms": {
            "field": "entities.per",
            "size": 12
          }
        }
      }
    },
    "Locais.Locais mencionados": {
      "nested": {
        "path": "entities"
      },
      "aggs": {
        "Locais mencionados": {
          "terms": {
            "field": "entities.loc",
            "size": 12
          }
        }
      }
    }
  },
  "highlight": {
    "pre_tags": [
      "<code>"
    ],
    "post_tags": [
      "</code>"
    ],
    "fields": {
      "conteudo": {},
      "partes": {}
    }
  },
  "suggest": {
    "text": "genebra",
    "simple_phrase": {
      "phrase": {
        "field": "conteudo",
        "size": 1,
        "direct_generator": [
          {
            "field": "conteudo",
            "suggest_mode": "always"
          }
        ]
      }
    }
  }
}

Exemplo de resposta:

HTTP/1.1 200 OK
Content-Type: application/json

{
   "took": 129,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 4,
      "max_score": 0.043179974,
      "hits": [
         {
            "_index": "processo_anexo",
            "_type": "processoAnexo",
            "_id": "15846257_1744",
            "_score": 0.043179974,
            "_source": {
               "comment": null,
               "user_company_id": 181,
               "proc_id": 1744,
               "processo": {
                  "numeroAlternativo": null,
                  "vara": 13,
                  "classeNatureza": "CRIMINAL ESPECIALIZADA",
                  "distribuicaoTipo": "DESCONHECIDA",
                  "situacao": "ATIVO",
                  "area": "Cível",
                  "assuntoExtra": "\"Lavagem\" ou Ocultação de Bens, Direitos ou Valores Oriundos de Corrupção (Lei 9.613/1998, art. 1º, V)",
                  "audiencias": null,
                  "extinto": "false",
                  "valor": 0,
                  "alteradoEm": "2016-08-24T18:39:14",
                  "foro": "CURITIBA",
                  "situacao_situacaoID": 1,
                  "sentencaData": null,
                  "numero": "5039296-19.2015.4.04.7000",
                  "comarca": "PR",
                  "tribunalID": 11,
                  "tribunal": "TRF4",
                  "processoID": 95183390,
                  "distribuicaoData": "2015-08-05",
                  "arquivado": false,
                  "classes": [],
                  "acessos": "2016-08-24 19:55:26",
                  "uf": "-",
                  "criadoEm": "2016-07-01T20:58:18",
                  "partes": [
                     {
                        "cnpj": 3636198000192,
                        "parteRelacaoID": 70,
                        "advogados": [
                           {
                              "nomeNormalizado": "PAULO ROBERTO GALVAO DE CARVALHO",
                              "uf": "",
                              "advogadoID": 1416992,
                              "oab": "",
                              "cnpjCpf": ""
                           }
                        ],
                        "cpf": null,
                        "nomeParteNormalizado": "MINISTERIO PUBLICO FEDERAL",
                        "relacaoNormalizado": "AUTOR",
                        "parteID": 69502,
                        "documento": "03636198000192",
                        "nomeParte": "MINISTERIO PUBLICO FEDERAL",
                        "processoParteAdvogadoID": 551684429
                     },
                     {
                        "cnpj": null,
                        "parteRelacaoID": 304,
                        "advogados": [
                           {
                              "nomeNormalizado": "FERNANDA SILVA TELLES",
                              "uf": "RJ",
                              "advogadoID": 46045,
                              "oab": "076427",
                              "cnpjCpf": ""
                           }
                        ],
                        "cpf": 219552711,
                        "nomeParteNormalizado": "BERNARDO SCHILLER FREIBURGHAUS",
                        "relacaoNormalizado": "REU",
                        "parteID": 25693159,
                        "documento": "219552711",
                        "nomeParte": "BERNARDO SCHILLER FREIBURGHAUS",
                        "processoParteAdvogadoID": 546084682
                     }
                  ]
               },
               "orgao": null,
               "alias": null,
               "publicadoEm": "2016-02-14T00:00:00",
               "user_creator_id": 205,
               "conteudo": "Poder Judiciario JUSTICA FEDERAL Secao Judiciaria do ...",
               "last_movimento_at": null,
               "user_custom": null,
               "citado_at": null,
               "dias_sem_andamento": null,
               "uf": null,
               "last_updated_at": null,
               "encerrado_at": null,
               "summary": null,
               "titulo": "Titulo do anexo",
               "entities": {
                  "org": [
                     "PR",
                     "Suica",
                     "Grupo Odebrecht",
                     "MPF"
                  ],
                  "per": [
                     "BERNARDO SCHILLER FREIBURGHAUS",
                     "cooperacao",
                     "Signatario",
                     "Bernardo Schiller Freiburghaus",
                     "Anita Garibaldi",
                     "reus",
                     "Curitiba Av",
                     "fulcro",
                     "reus executivos",
                     "SERGIO FERNANDO MORO"
                  ],
                  "loc": [
                     "23.2015.4.04.7000",
                     "Brasil",
                     "Juiz",
                     "Suica",
                     "Genebra",
                     "relacao",
                     "Curitiba",
                     "19.2015.4.04.7000"
                  ]
               },
               "status_monitor": 0,
               "procset_name": "LJ",
               "enderecoS3": "http://anexos.radaroficial.com.br/770edd64d28b3a09218e2040c131c0fa.html",
               "procset_id": 22,
               "distribuido_at": null,
               "tipoAnexo": 3,
               "fase": null
            }
         },
         {
            "_index": "processo_anexo",
            "_type": "processoAnexo",
            "_id": "15846257_1644",
            "_score": 0.043179974,
            "_source": {
               "comment": null,
               "user_company_id": 181,
               "proc_id": 1644,
               "processo": {
                  "numeroAlternativo": null,
                  "vara": 13,
                  "classeNatureza": "CRIMINAL ESPECIALIZADA",
                  "distribuicaoTipo": "DESCONHECIDA",
                  "situacao": "ATIVO",
                  "area": "Cível",
                  "assuntoExtra": "\"Lavagem\" ou Ocultação de Bens, Direitos ou Valores Oriundos de Corrupção (Lei 9.613/1998, art. 1º, V)",
                  "audiencias": null,
                  "extinto": "false",
                  "valor": 0,
                  "alteradoEm": "2016-08-24T18:39:14",
                  "foro": "CURITIBA",
                  "situacao_situacaoID": 1,
                  "sentencaData": null,
                  "numero": "5039296-19.2015.4.04.7000",
                  "comarca": "PR",
                  "tribunalID": 11,
                  "tribunal": "TRF4",
                  "processoID": 95183390,
                  "distribuicaoData": "2015-08-05",
                  "arquivado": false,
                  "classes": [],
                  "acessos": "2016-08-24 19:55:26",
                  "uf": "-",
                  "criadoEm": "2016-07-01T20:58:18",
                  "partes": [
                     {
                        "cnpj": 3636198000192,
                        "parteRelacaoID": 70,
                        "advogados": [
                           {
                              "nomeNormalizado": "PAULO ROBERTO GALVAO DE CARVALHO",
                              "uf": "",
                              "advogadoID": 1416992,
                              "oab": "",
                              "cnpjCpf": ""
                           },
                           {
                              "nomeNormalizado": "JERUSA BURMANN VIECILI",
                              "uf": "",
                              "advogadoID": 1575450,
                              "oab": "RS054789",
                              "cnpjCpf": ""
                           }
                        ],
                        "cpf": null,
                        "nomeParteNormalizado": "MINISTERIO PUBLICO FEDERAL",
                        "relacaoNormalizado": "AUTOR",
                        "parteID": 69502,
                        "documento": "03636198000192",
                        "nomeParte": "MINISTERIO PUBLICO FEDERAL",
                        "processoParteAdvogadoID": 551684429
                     },
                     {
                        "cnpj": null,
                        "parteRelacaoID": 304,
                        "advogados": [
                           {
                              "nomeNormalizado": "FERNANDA SILVA TELLES",
                              "uf": "RJ",
                              "advogadoID": 46045,
                              "oab": "076427",
                              "cnpjCpf": ""
                           }
                        ],
                        "cpf": 219552711,
                        "nomeParteNormalizado": "BERNARDO SCHILLER FREIBURGHAUS",
                        "relacaoNormalizado": "REU",
                        "parteID": 25693159,
                        "documento": "219552711",
                        "nomeParte": "BERNARDO SCHILLER FREIBURGHAUS",
                        "processoParteAdvogadoID": 546084682
                     }
                  ]
               },
               "orgao": null,
               "alias": null,
               "publicadoEm": "2016-02-14T00:00:00",
               "user_creator_id": 205,
               "conteudo": "Poder Judiciario JUSTICA FEDERAL Secao Judiciaria do Parana 13a ...",
               "last_movimento_at": null,
               "user_custom": null,
               "citado_at": null,
               "dias_sem_andamento": null,
               "titulo": "Titulo do anexo",
               "uf": null,
               "last_updated_at": null,
               "encerrado_at": null,
               "summary": null,
               "entities": {
                  "org": [
                     "PR",
                     "Suica",
                     "Grupo Odebrecht",
                     "MPF"
                  ],
                  "per": [
                     "BERNARDO SCHILLER FREIBURGHAUS",
                     "cooperacao",
                     "Signatario",
                     "Bernardo Schiller Freiburghaus",
                     "Anita Garibaldi",
                     "reus",
                     "Curitiba Av",
                     "fulcro",
                     "reus executivos",
                     "SERGIO FERNANDO MORO"
                  ],
                  "loc": [
                     "23.2015.4.04.7000",
                     "Brasil",
                     "Juiz",
                     "Suica",
                     "Genebra",
                     "relacao",
                     "Curitiba",
                     "19.2015.4.04.7000"
                  ]
               },
               "status_monitor": 0,
               "procset_name": "LJ",
               "enderecoS3": "http://anexos.radaroficial.com.br/770edd64d28b3a09218e2040c131c0fa.html",
               "procset_id": 22,
               "distribuido_at": null,
               "tipoAnexo": 3,
               "fase": null
            }
         }
      ]
   },
   "aggregations": {
      "processo_agg": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "19.2015.4.04.7000",
               "doc_count": 4
            },
            {
               "key": "5039296",
               "doc_count": 4
            }
         ]
      }
   },
   "suggest": {
      "simple_phrase": [
         {
            "text": "genebra",
            "offset": 0,
            "length": 7,
            "options": []
         }
      ]
   }
}
Parameters:
  • index – nome do índice onde a busca será realizada
Request Headers:
 
Response Headers:
 

Campos dos documentos indexados

Para o tipo processoAnexo, disponibilizamos os seguintes campos:

  • processo: são os dados completos do processo judicial associado ao anexo
  • conteudo: texto puro do anexo
  • entities: lista de entidades extraídas do texto do anexo. org=organizações, per=pessoas, loc=locais
  • enderecoS3: URL onde o anexo original pode ser consultado ou baixado

Exemplos de consultas

Quantidade de processos por tribunal

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
    "size": 0,
    "aggs": {
        "tribunais": {
          "terms": {
              "field": "tribunal",
              "size": 12
          }
        }
    }
}

Quantidade de processos por data de distribuição

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
    "size": 0,
    "aggs": {
        "by_month": {
            "date_histogram": {
              "field":    "distribuicaoData",
              "interval": "month",
              "format":   "yyyy-MM"
            }
        }
    }
}

Média de anexos por processo

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
    "size": 0,
    "aggs" : {
        "avg_anexos" : { "avg" : { "field" : "num_anexos" } }
    }
}

Histograma da data de publicação dos anexos dos processos

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
    "size": 0,
    "aggs" : {
        "articles_over_time" : {
            "date_histogram" : {
                "field" : "publicadoEm",
                "interval" : "month"
            }
        }
    }
}

Histograma da data de distribuição dos processos com anexos

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
  "size" : 0,
  "aggs": {
    "processos": {
      "nested": {
        "path": "processo"
      },
      "aggs": {
        "by_month": {
          "date_histogram": {
            "field":    "processo.distribuicaoData",
            "interval": "month",
            "format":   "yyyy-MM"
          }
        }
      }
    }
  }
}

Histograma da data de publicação dos anexos que mencionem uma determinada pessoa

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
  "query": {
      "nested": {
        "path": "entities",
        "query": {
            "term": {
              "entities.per": "ARMANDO FURLAN"
            }
        }
      }
  },
  "size": 0,
  "aggs": {
      "articles_over_time": {
        "date_histogram": {
            "field": "publicadoEm",
            "interval": "month"
        }
      }
  }
}

Documento aleatório num indice

Basta variar valor do campo seed.

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
  "size": 1,
  "query": {
      "function_score": {
        "functions": [
            {
              "random_score": {
                  "seed": "1477072619038"
              }
            }
        ]
      }
  }
}

Total de anexos de processos

GET https://op.digesto.com.br/api/proc_search/processo_anexo_181/processo_anexo/_count  HTTP/1.1

Total de processos indexados

GET https://op.digesto.com.br/api/proc_search/processo_181/processo/_count  HTTP/1.1

Processos mais comuns e pessoas mais citadas

Específicamos duas agregações. É possivel também passar um elemento query para restringir o universo de anexos/processos considerados.

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
    "size" : 0,
    "aggs": {
        "processo_agg": {
          "nested": {
              "path": "processo"
          },
          "aggs": {
              "numeros": {
                "terms": {
                    "field": "processo.numero",
                    "size": 12
                }
              }
          }
        },
        "person_agg": {
          "nested": {
              "path": "entities"
          },
          "aggs": {
              "pers": {
                "terms": {
                    "field": "entities.per",
                    "size": 12
                }
              }
          }
        }

    }
}

Todos os anexos de um processo

POST https://op.digesto.com.br/api/proc_search/processo_anexo_181/_search  HTTP/1.1
Content-Type: application/json

{
   "query": {
      "nested": {
         "path": "processo",
         "query": {
            "term": {
               "processo.processoID": 98908234
            }
         }
      }
   }
}

Buscar texto dentro dos anexos de um processo específico

POST https://op.digesto.com.br/api/proc_search/processo_181/_search  HTTP/1.1
Content-Type: application/json

{
   "query": {
      "bool": {
         "must": {
            "multi_match": {
               "query": "genebra",
               "fields": [
                  "partes^2",
                  "conteudo"
               ],
               "operator": "and"
            }
         },
         "filter": {
            "nested": {
               "path": "processo",
               "query": {
                  "term": {
                     "processo.processoID": 98908234
                  }
               }
            }
         }
      }
   }
}

Buscar texto dentro dos anexos publicados em uma faixa de datas

POST https://op.digesto.com.br/api/proc_search/processo_anexo_181/_search  HTTP/1.1
Content-Type: application/json

{
   "query": {
      "bool": {
         "must": [
            {
               "multi_match": {
                  "query": "genebral",
                  "fields": [
                     "partes^2",
                     "conteudo"
                  ],
                  "operator": "and"
               }
            },
            {
               "range": {
                  "publicadoEm": {
                     "from": "2015-10-20",
                     "to": "2015-10-30"
                  }
               }
            }
         ]
      }
   }
}

Ordenando resultados por diversos critérios

Basta acrescentar o campo sort conforme exemplo abaixo, no mesmo nível do from e size.

Veja mais na documentação do Elasticsearch.

"sort" : [
    { "processo.distribuicaoData" : "desc" },
    "_score"
],