Utilize a ferramenta de código aberto solr-to-es para migrar documentos de um Solr Core para um índice do Alibaba Cloud Elasticsearch.
O solr-to-es oferece suporte apenas a clusters do Elasticsearch V6.X. Caso seu cluster de destino execute uma versão diferente, realize um teste de compatibilidade antes de continuar.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster do Alibaba Cloud Elasticsearch V6.X com a opção Auto Indexing ativada. Este exemplo utiliza a versão V6.3.2. Para obter instruções de configuração, consulte Crie um cluster do Alibaba Cloud Elasticsearch e Configure o arquivo YML.
Uma instância do Elastic Compute Service (ECS) em execução na mesma região, zona e Virtual Private Cloud (VPC) do cluster do Elasticsearch. Este exemplo usa CentOS 7.3. Para instruções de configuração, consulte Etapa 1: Crie uma instância ECS.
O Solr instalado na instância ECS. A versão utilizada neste exemplo é a 5.0.0. Para mais informações, acesse a documentação oficial do Solr.
Python 3.0 ou superior instalado na instância ECS. Este exemplo utiliza Python 3.6.2.
pysolr 3.3.3 ou superior (mas anterior à 4,0) instalado na instância ECS.
Instale o solr-to-es
-
Conecte-se à instância ECS. Para obter instruções, consulte Conectar-se a uma instância Linux usando senha ou chave.
Este exemplo utiliza uma conta de usuário comum.
Baixe o solr-to-es e acesse o diretório onde o arquivo
setup.pyestá armazenado.-
Instale o solr-to-es:
sudo python setup.py install
Migrar documentos
Todos os comandos de migração seguem a mesma estrutura: forneça a URL de consulta do Solr, o endpoint do Elasticsearch com as credenciais, o nome do índice de destino e o tipo de índice.
Execute o comando abaixo para migrar documentos de um Solr Core para um índice do Elasticsearch:
sudo python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>
Substitua os espaços reservados pelos seus valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Endpoint do seu cluster Solr |
http://116.62.. |
|
|
Nome do Solr Core que contém os documentos a serem migrados |
|
|
|
Nome de usuário do seu cluster Elasticsearch. O padrão é |
|
|
|
Senha definida durante a criação do cluster |
— |
|
|
Endpoint interno ou público do seu cluster Elasticsearch. Encontre essa informação na página Basic Information do seu cluster. Consulte Visualize as informações básicas de um cluster. |
|
|
|
Nome do índice de destino |
|
|
|
Tipo do índice |
|
Se você utilizar uma versão diferente do solr-to-es, tente esta sintaxe alternativa de comando. Para detalhes, consulte a documentação do solr-to-es . sudo solr-to-es [-h] [--solr-query SOLR_QUERY] [--solr-fields COMMA_SEP_FIELDS] [--rows-per-page ROWS_PER_PAGE] [--es-timeout ES_TIMEOUT] solr_url elasticsearch_url elasticsearch_index doc_type A execução deste comando no ambiente descrito neste tópico retorna o seguinte erro: -bash: solr-to-es.py: command not found
Exemplo
Neste exemplo, todos os documentos do Solr Core my_core são consultados e gravados no índice elasticsearch_index do seu cluster Elasticsearch.
Na instância ECS, acesse o diretório
solr-to-es-master/solr_to_es.-
Execute o seguinte comando:
sudo python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:Your password@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_typeA URL de consulta do Solr neste comando utiliza os seguintes parâmetros:
Parâmetro
Descrição
qObrigatório. Expressão de consulta que utiliza a sintaxe padrão do Solr.
*%3A*corresponde a todos os documentos.wtFormato da resposta. Valores suportados:
json,xml,python,ruby,csv.indentDefina se a resposta deve ser recuada para melhorar a legibilidade. Padrão:
false.Para os demais parâmetros, consulte a seção Migrar documentos.
-
Faça login no console Kibana do seu cluster Elasticsearch. Para obter instruções, consulte Fazer login no console Kibana.
Este exemplo utiliza o console Kibana de um cluster Elasticsearch V6.7. As etapas podem variar em outras versões.
No painel de navegação à esquerda, clique em Dev Tools e, em seguida, clique em Go to work.
-
Na aba Console, execute o comando abaixo para confirme que o índice
elasticsearch_indexfoi criado:GET _cat/indices?v -
Execute o seguinte comando para visualize os documentos migrados:
GET /elasticsearch_index/doc_type/_searchEm caso de sucesso, a resposta será semelhante a esta:
{ "took" : 12, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 1.0, "hits" : [ { "_index" : "elasticsearch_index", "_type" : "doc_type", "_id" : "Tz8WNW4BwRjcQciJ****", "_score" : 1.0, "_source" : { "id" : "2", "title" : [ "test" ], "_version_" : 1648195017403006976 } }, { "_index" : "elasticsearch_index", "_type" : "doc_type", "_id" : "Tj8WNW4BwRjcQciJ****", "_score" : 1.0, "_source" : { "id" : "1", "title" : [ "change.me" ], "_version_" : 1648195007391203328 } } ] } }
Próximos passos
Após confirme que os documentos foram migrados com sucesso:
Atualize as configurações de conexão da sua aplicação para apontar para o endpoint do Elasticsearch.
Valide se as consultas de pesquisa retornam os resultados esperados.
Caso o Auto Indexing não seja mais necessário, desative-o para evitar a criação não intencional de índices. Para obter instruções, consulte Configure o arquivo YML.