O que é Apache Solr
Apache Solr é um dos bancos de dados NoSQL mais populares que pode ser usado para armazenar dados e consultá-los quase em tempo real. É baseado no Apache Lucene e é escrito em Java. Assim como o Elasticsearch, ele oferece suporte a consultas de banco de dados por meio de APIs REST. Isso significa que podemos usar chamadas HTTP simples e métodos HTTP como GET, POST, PUT, DELETE etc. para acessar dados. Ele também oferece uma opção para obter dados na forma de XML ou JSON por meio das APIs REST.
Arquitetura: Apache Solr
Antes de começarmos a trabalhar com o Apache Solr, devemos entender os componentes que constituem o Apache Solr. Vamos dar uma olhada em alguns componentes que possui:
Arquitetura Apache Solr
Observe que apenas os principais componentes do Solr são mostrados na figura acima. Vamos entender sua funcionalidade aqui também:
- Solicitar manipuladores: As solicitações que um cliente faz ao Solr são gerenciadas por um manipulador de solicitações. A solicitação pode ser qualquer coisa, desde adicionar um novo registro até atualizar um índice no Solr. Os manipuladores identificam o tipo de solicitação do método HTTP usado com o mapeamento de solicitação.
- Componente de Pesquisa: Este é um dos componentes mais importantes pelos quais o Solr é conhecido. O componente de pesquisa cuida da execução de operações relacionadas à pesquisa, como imprecisão, verificações ortográficas, consultas de termos, etc.
- Analisador de Consulta: Este é o componente que realmente analisa a consulta que um cliente passa para o gerenciador de solicitações e divide a consulta em várias partes que podem ser entendidas pelo mecanismo subjacente
- Escritor de resposta: Este componente é responsável por gerenciar o formato de saída das consultas passadas ao motor. O Response Writer nos permite fornecer uma saída em vários formatos, como XML, JSON, etc.
- Analisador / Tokenizer: Lucene Engine entende consultas na forma de vários tokens. Solr analisa a consulta, divide-a em vários tokens e a passa para o Lucene Engine.
- Processador de solicitação de atualização: Quando uma consulta é executada e realiza operações como atualizar um índice e dados relacionados a ele, o componente Update Request Processor é responsável por gerenciar os dados no índice e modificá-los.
Introdução ao Apache Solr
Para começar a usar o Apache Solr, ele deve estar instalado na máquina. Para fazer isso, leia Instalar Apache Solr no Ubuntu.
Certifique-se de ter uma instalação Solr ativa se quiser experimentar os exemplos que apresentamos mais tarde na lição e a página de administração estiver acessível no localhost:
Página inicial do Apache Solr
Inserindo Dados
Para começar, vamos considerar uma coleção no Solr que chamamos de linux_hint_collection. Não há necessidade de definir explicitamente esta coleção, pois quando inserirmos o primeiro objeto, a coleção será feita automaticamente. Vamos tentar nossa primeira chamada de API REST para inserir um novo objeto na coleção chamada linux_hint_collection.
Inserindo Dados
curl -X POST -H 'Content-Type: application / json''http: // localhost: 8983 / solr / linux_hint_collection / update / json / docs' --data-binary '
"id": "iduye",
"nome": "Shubham"
'
Aqui está o que recebemos de volta com este comando:
Comando para inserir dados no Solr
Os dados também podem ser inseridos usando a página inicial do Solr que vimos anteriormente. Vamos tentar isso aqui para que as coisas fiquem claras:
Inserir dados via página inicial do Solr
Como o Solr tem uma excelente forma de interação com APIs HTTP RESTful, vamos demonstrar a interação do banco de dados usando as mesmas APIs a partir de agora e não vamos nos concentrar muito na inserção de dados através da página do Solr.
Listar todas as coleções
Podemos listar todas as coleções no Apache Solr usando uma API REST também. Aqui está o comando que podemos usar:
Listar todas as coleções
curl http: // localhost: 8983 / solr / admin / coleções?ações = LISTA & wt = jsonVamos ver a saída deste comando:
Vemos duas coleções aqui que existem em nossa instalação do Solr.
Obter objeto por ID
Agora, vamos ver como podemos OBTER dados da coleção Solr com um ID específico. Aqui está o comando da API REST:
Obter objeto por ID
curl http: // localhost: 8983 / solr / linux_hint_collection / get?id = iduyeAqui está o que recebemos de volta com este comando:
Obtenha todos os dados
Em nossa última API REST, consultamos dados usando um ID específico. Desta vez, obteremos todos os dados presentes em nossa coleção Solr.
Obter objeto por ID
curl http: // localhost: 8983 / solr / linux_hint_collection / select?q = *: *Aqui está o que recebemos de volta com este comando:
Observe que usamos '*: *' no parâmetro de consulta. Isso especifica que o Solr deve retornar todos os dados presentes na coleção. Mesmo se tivermos especificado que todos os dados devem ser retornados, o Solr entende que a coleção pode conter uma grande quantidade de dados e assim, ele retornará apenas os primeiros 10 documentos.
Excluindo todos os dados
Até agora, todas as APIs que testamos usavam o formato JSON. Desta vez, vamos tentar o formato de consulta XML. Usar o formato XML é extremamente semelhante ao JSON, pois XML também é autodescritivo.
Vamos tentar um comando para deletar todos os dados que temos em nossa coleção.
Excluindo todos os dados
curl "http: // localhost: 8983 / solr / linux_hint_collection / update?commit = true "-H" Content-Type: text / xml "--data-binary" *: * "Aqui está o que recebemos de volta com este comando:
Exclua todos os dados usando consulta XML
Agora, se tentarmos obter todos os dados novamente, veremos que nenhum dado está disponível agora:
Obtenha todos os dados
Contagem Total de Objetos
Para um comando CURL final, vamos ver um comando com o qual podemos encontrar o número de objetos que estão presentes em um índice. Aqui está o comando para o mesmo:
Contagem Total de Objetos
curl http: // localhost: 8983 / solr / linux_hint_collection / query?debug = query & q = *: *Aqui está o que recebemos de volta com este comando:
Contar o número de objetos
Conclusão
Nesta lição, vimos como podemos usar o Apache Solr e passar consultas usando curl nos formatos JSON e XML. Também vimos que o painel de administração do Solr é útil da mesma maneira que todos os comandos curl que estudamos.