热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr集群数据迁移至Elasticsearch

Elasticsearch是一款非常强大的搜索引擎,可以让你在海量的数据中快速找到想要的内容。例如,代码搜索:可以帮助您找到相应的代码仓库,还可以实现代码级的搜索及高亮显示;网上s

Elasticsearch是一款非常强大的搜索引擎,可以让你在海量的数据中快速找到想要的内容。例如,代码搜索:可以帮助您找到相应的代码仓库,还可以实现代码级的搜索及高亮显示;网上shopping:可以帮助您推荐商品。

除了大数据搜索,Elasticsearch结合Logstash和Beats,还被广泛应用在大数据实时分析领域,例如日志分析、指标监控、信息安全等。帮助您探索海量的结构化和非结构化的数据,按需创建可视化报表、对监控数据设置报警阈值,甚至使用机器学习技术,自动识别异常状况、及时发出警报。

在DBRanking 2019年5月的数据库评测中,Elasticsearch在搜索引擎中排名第一,国内也有大量的公司在使用Elasticsearch。并且Elasticsearch在全球的下载量已经超过了3.5亿次。如果您需要将Solr集群中的数据迁移至Elasticsearch,请跟着本文一步步来操作吧。

本文以阿里云Elasticsearch为例,为您演示通过第三方社区提供的solr-to-es工具,将Solr节点中的文档迁移到阿里云Elasticsearch(简称ES)中的方法。

阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。阿里云Elasticsearch为您提供1个月的免费试用活动,单击此处即可免费试用。


环境准备



  1. 创建阿里云ES实例,要求版本为6.x,本文使用6.3.2 版本,详情请参见创建阿里云Elasticsearch实例。

    说明: 本文使用的solr-to-es迁移工具仅支持阿里云ES 6.x版本,其他版本需自行测试。



  2. 开启目标阿里云ES的自动创建索引功能,详情请参见开启自动创建索引。



  3. 创建阿里云ECS实例,本文使用CentOS 7.3版本,详情请参见步骤一:创建ECS实例。

    说明: ECS实例需要与阿里云ES实例在同一区域和可用区,以及同一专有网络VPC(Virtual Private Cloud)下。



  4. 在ECS上安装Solr,本文使用5.0.0版本的Solr,详情请参见Solr官方文档。



  5. 在ECS上安装Python,要求3.0及以上版本,本文使用Python 3.6.2。



  6. 在ECS上安装PySolr,要求3.3.3及以上,4.0以下版本。




安装solr-to-es工具



  1. 连接ECS服务器,下载solr-to-es工具。



  2. 进入setup.py所在的目录,运行python setup.py install命令,安装solr-to-es工具。



  3. 安装成功后,参考以下命令进行文档迁移。

    python __main__.py :8983/solr//select http://:@:9200






































    参数说明
    Solr集群的完整访问地址。例如,http://116.62.**.**。
    迁移文档对应的SolrCore的名称。
    阿里云ES的访问用户名,默认为elastic。
    阿里云ES的访问密码,在创建实例时设定。
    阿里云ES实例的内网或外网访问地址。可在实例的基本信息页面获取,详情请参见查看实例的基本信息。
    待写入的Solr文档对应的索引名称。
    对应索引的类型名称。

    说明: 如果您使用的是其他版本的solr-to-es工具,也可以尝试使用如下命令进行文档迁移,参数详情请参见solr-to-es。

    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

    本案例使用以上命令会输出-bash: solr-to-es.py: command not found的错误。




操作示例

通过以下命令,查询名称为my_core的SolrCore的所有文档,写入到阿里云ES实例中。对应的索引为elasticsearch_index,索引类型为doc_type



  1. 在Solr环境中,进入solr-to-es-master/solr_to_es文件夹下。



  2. 执行以下命令。

    python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:替换密码@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_type






















    参数说明
    qSolr的查询语法,必选,可以使用运算符。*%3A*表示查询所有文档。
    wt返回的数据类型,支持JSON、XML、Python、Ruby、CSV等格式。
    indent返回结果是否需要格式化展示,默认为false

    其他参数说明请参见表 1。



  3. 登录目标阿里云ES实例的Kibana控制台。

    登录控制台的具体操作步骤请参见登录Kibana控制台。



  4. 单击左侧导航栏的Dev Tools(开发工具),在Console中执行以下命令,查看阿里云ES集群服务中是否已成功创建elasticsearch_index索引。

    GET _cat/indices?v


  5. 执行以下命令,查看迁移成功的文档详情。

    GET /elasticsearch_index/doc_type/_search

    查询成功后,返回如下结果。

    {"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}}]}
    }



推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • javajigsaw2015年12月1日,星期二,在OpenJDK邮件列表中,MarkReinhold确认了许多人的期望:J ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
  • 弹性云服务器ECS弹性云服务器(ElasticCloudServer)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境 ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 优秀到卓越就差比他更快搭建elk集群架构上篇
    工作原理开源分布式搜索引擎,特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制 ... [详细]
author-avatar
C艹ering欧珈潮流
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有