【最佳实践】Solr集群数据迁移至Elasticsearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文以阿里云Elasticsearch为例,为您演示通过第三方社区提供的solr-to-es工具,将Solr节点中的文档迁移到阿里云Elasticsearch(简称ES)中的方法。

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 <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>
|参数|说明|
|--|--|
|`<solr_url>`|Solr集群的完整访问地址。例如,http://116.62.\*\*.\*\*。|
|`<my_core>`|迁移文档对应的SolrCore的名称。|
|`<username>`|阿里云ES的访问用户名,默认为elastic。|
|`<password>`|阿里云ES的访问密码,在创建实例时设定。|
|`<elasticsearch_url>`|阿里云ES实例的内网或外网访问地址。可在实例的基本信息页面获取,详情请参见[查看实例的基本信息](https://help.aliyun.com/document_detail/67804.html?spm=a2c4g.11186623.2.19.18a87461Jp4xKZ#task-2449896)。|
|`<elasticsearch_index>`|待写入的Solr文档对应的索引名称。|
|`<doc_type>`|对应索引的类型名称。|

**说明:** 如果您使用的是其他版本的solr-to-es工具,也可以尝试使用如下命令进行文档迁移,参数详情请参见[solr-to-es](https://github.com/o19s/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
|参数|说明|
|--|--|
|`q`|Solr的查询语法,必选,可以使用运算符。`*%3A*`表示查询所有文档。|
|`wt`|返回的数据类型,支持JSON、XML、Python、Ruby、CSV等格式。|
|`indent`|返回结果是否需要格式化展示,默认为`false`。|

其他参数说明请参见[表 1](https://help.aliyun.com/document_detail/143003.html?spm=a2c4g.11174283.6.832.4d097958P4tOeH#table-lnc-t0w-8ud)。
  1. 登录目标阿里云ES实例的Kibana控制台。

    登录控制台的具体操作步骤请参见[登录Kibana控制台](https://help.aliyun.com/document_detail/122668.html?spm=a2c4g.11186623.2.22.18a87461Jp4xKZ#task-761873)。
    
  2. 单击左侧导航栏的Dev Tools(开发工具),在Console中执行以下命令,查看阿里云ES集群服务中是否已成功创建elasticsearch_index索引。

    GET _cat/indices?v
  3. 执行以下命令,查看迁移成功的文档详情。

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

相关活动

更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费

image.png
image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
28天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
2月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
45 1
|
2月前
|
存储 监控 搜索推荐
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)
|
4月前
|
存储 Linux
ElasticSearch集群快照
ElasticSearch集群快照
236 1
|
4月前
|
安全 大数据 Java
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
53 0
|
2月前
|
开发工具 Docker 容器
docker安装集群版ElasticSearch
docker安装集群版ElasticSearch
|
2月前
|
Java 网络安全 数据安全/隐私保护
高可用elasticsearch集群搭建
高可用elasticsearch集群搭建
|
2月前
|
索引
elasticsearch数据迁移
elasticsearch数据迁移
|
2月前
|
网络安全 Docker 容器
【docker专题_01】docker搭建elasticsearch集群 -
【docker专题_01】docker搭建elasticsearch集群 -
|
2月前
|
缓存 Java API
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)

相关产品

  • 检索分析服务 Elasticsearch版