Solr集群数据迁移至Elasticsearch

2023-05-16

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实例的内网或外网访问地址。可在实例的基本信息页面获取,详情请参见查看实例的基本信息。
    <elasticsearch_index>待写入的Solr文档对应的索引名称。
    <doc_type>对应索引的类型名称。

    说明: 如果您使用的是其他版本的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
            }
          }
        ]
      }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Solr集群数据迁移至Elasticsearch 的相关文章

  • 使用 sunspot/solr 搜索多个模型

    我已经能够成功地实现基本的全文搜索 但是当我尝试使用范围 with statements 时 任何涉及多对多关系模型的查询似乎都不适合我 我知道相关行位于数据库中 因为我的 sql 语句确实返回了数据 然而 太阳黑子查询不会返回任何结果 我
  • 全文搜索 DynamoDB

    以下情况 我正在为我的客户将元素存储在 DyanmoDb 中 HashKey 是元素 ID Range Key 是客户 ID 除了这些字段之外 我还存储一个字符串数组 gt 标签 例如 Pets House 和多行文本 我想在我的应用程序中
  • 从 App Engine 连接到 Kubernetes 引擎

    我们希望使用应用程序引擎灵活的流程来更新位于 Google Kubernetes Engine 上的 ElasticSearch 索引 我们需要通过 http s 地址连接到 ElasticSearch 推荐的方法是什么 我们不想将集群暴露
  • 如何使用 Solr 索引 pdf 内容?

    我正在尝试使用 SolrJ 索引一些 pdf 文档 如下所述http wiki apache org solr ContentStreamUpdateRequestExample http wiki apache org solr Cont
  • Solr 您的意思是(拼写检查组件)

    我在我的应用程序中使用 solr 并集成了拼写检查组件 但我遇到了一些问题 第一的 当我输入一个用空格分隔的术语时 他们会给我每个术语的更正 Eg 水 gt 什么术语 但事实是watters 第二 当我输入一些带有错误术语的短语时 尽管其他
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • 在 ElasticSearch API 应用程序中找不到 NodeBuilder

    我正在尝试实现 Elasticsearch API 我的系统接受 nodeBuilder 时出现错误 这是代码 import org elasticsearch action index IndexResponse import org e
  • 如何使用ElasticSearch来实现社交搜索?

    我正在尝试使用 ElasticSearch 创建具有社交功能的商业搜索 我有一个企业目录 用户可以通过不同的方式与这些企业进行交互 通过查看它们 检查它们等 当用户搜索商家时 我希望能够在结果顶部向他们显示他们的朋友与之互动过的商家 或根据
  • Solrcloud Zookeper 设置:等待 4000ms 后未找到注册的领导者,集合:c1 切片:shard2

    我使用 solr 4 10 3 我通过 java 中的嵌入式 jetty 服务器启动 solr 我正在尝试使用 2 个分片 领导者 配置 solrcloud 我有一个外部动物园管理员设置 我在启动 solr 时指向动物园管理员实例 如下所示
  • 从 node.js 创建对 AWS ES 实例的有效签名请求

    我试图找到一个示例 说明如何连接到 Node js 中的 AWS ES 实例 然后通过一个简单的请求访问 ES 集群 我正在尝试使用elasticsearch节点包 https www npmjs com package elasticse
  • 如何根据特定字段对 solr 查询的前 100 个结果进行排序?

    我想使用特定字段对 solr 的前 100 个文档进行排序 但它对整个结果集进行排序 然后显示结果 以下是我的代码 query1 setQuery Natural Language query1 setStart 0 query1 setR
  • 尝试在 ElasticSearch 中查询和聚合,但聚合不起作用 - elasticsearch.js 客户端

    我尝试查询我的数据集有两个目的 匹配一个术语 可转售 true 按价格对结果进行排序 最低到最高 数据集 文档是 data resellable true startingPrice 0 id 4emEe r x5DRCc5 buyNowP
  • 如何禁用 solr 管理页面

    对于生产来说 拥有一个甚至不要求登录凭据的 solr 管理员感觉不安全 如何禁用默认的 solr 管理页面 我只是希望我的 web 应用程序使用 Solr 进行搜索词索引 我强烈建议保留管理页面用于调试目的 它在很多情况下拯救了我 有多种方
  • 自动完成建议中的输出字段

    当我想在 elasticsearch 中索引文档时 会发生此问题 message MapperParsingException failed to parse nested IllegalArgumentException unknown
  • 适用于elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

    我在 Windows 10 上将 Docker Desktop 与 Linux 容器结合使用 并希望通过 docker compose 文件启动最新版本的 elasticsearch 和 kibana 容器 使用 6 2 4 等旧版本时一切
  • Java ElasticSearch 配置的节点均不可用

    过去一小时刚刚下载并安装了elasticsearch 1 3 2 打开 IPtables 端口 9200 和 9300 9400 在 etc hosts 中设置我的计算机名称和 ip 头部模块和护理人员安装并运行顺利 本地主机上的curl
  • 在elasticsearch中转义特殊字符

    我正在使用Elasticsearch python 客户端 https elasticsearch py readthedocs io en master 对我们托管的 elasticsearch 实例进行一些查询 我注意到一些字符需要转义
  • Solr/Solrj 分页

    我正在创建的 Web 应用程序中使用 solr 和 solrj 来实现索引和搜索功能 我的请求处理程序在 solrconfig xml 中配置如下
  • 如何备份Solr数据库?

    我想知道如何备份 转储 Solr 数据库 如果只是复制一些文件 请指定哪些文件 文件名 位置等 Thanks We use Solr复制 http wiki apache org solr SolrReplication做我们的备份 您可以
  • Elasticsearch 无法获取颁发者证书

    我正在尝试使用 LetsEncrypt 加密 tls 证书 但我的服务器页面显示 Kibana server is not ready yet 这是错误 etc kibana kibana yml type log timestamp 20

随机推荐

  • 使用VScode远程操作虚拟机(ubuntu)

    1 VSCode安装 2 打开Ubuntu 使用ifconfig 获取系统接口 3 打开remote ssh 4 配置好相关属性 5 开启远程连接输入密码即可连接
  • 学习率(Learing Rate)的作用以及如何调整

    1 什么是学习率 学习率 Learning rate 作为监督学习以及深度学习中重要的超参 xff0c 其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值 合适的学习率能够使目标函数在合适的时间内收敛到局部最小值 这里以梯度下降为例
  • Pytorch 中net.train() 和 net.eval()的作用和如何使用?

    一般在训练模型的代码段加入 xff1a model train 在测试模型时候加入 xff1a model eval 同时发现 xff0c 如果不写这两个程序也可以运行 xff0c 这是因为这两个方法是针对在网络训练和测试时采用不同方式的情
  • Qt 子窗口内嵌到父窗口中

    有时需要把一个子窗口内嵌进入父窗口当中 我们可以这样做 1 新建一个QWidget 或者QDialog的子类 ClassA xff08 父类为ClassB xff09 2 在新建类的构造函数中添加设置窗口属性 setWindowFlags
  • 用Cmake 编译OpenCV常见的错误

    minGW32 make遇到的错误1 xff1a 37 Linking CXX shared library bin libopencv core341 dll CMakeFiles opencv core dir objects a me
  • 卷积 反卷积 上采样 下采样 区别

    1 卷积 就是利用卷积核 步长前进 卷积整个图片 2 反卷积 反卷积的具体操作 原图输入尺寸为 1 xff0c 3 xff0c 3 xff0c 3 对应 batch size channels width height 反卷积tconv 6
  • Go语言操作数据库MySQL

    连接 Go语言中的database sql包提供了保证SQL或类SQL数据库的泛用接口 xff0c 并不提供具体的数据库驱动 使用database sql包时必须注入 xff08 至少 xff09 一个数据库驱动 我们常用的数据库基本上都有
  • 解决Git请求错误问题

    git clone gits github com Cloning into 39 FdogSerialize 39 git 39 remote gits 39 is not a git command See 39 git help 39
  • Reactor 模式

    Reactor 翻译过来的意思是 反应堆 xff0c 可能大家会联想到物理学里的核反应堆 xff0c 实际上并不是的这个意思 这里的反应指的是 对事件反应 xff0c 也就是来了一个事件 xff0c Reactor 就有相对应的反应 响应
  • MATLAB画图调整分辨率

    问题 xff1a 经常需要用MATLAB画图 xff0c 但是保存之后分辨率不高 xff0c 特别是需要放大的情况下 解决 xff1a 对于下面这种画出的图形 选择 文件 61 gt 导出设置 61 gt 渲染 61 gt 分辨率 选择60
  • C语言中常见的逻辑错误

    常见错误一 xff1a 61 和 61 61 混在一起 int main int ret if ret 61 1 return 0 结果 xff1a 变量被错误赋值 xff0c 逻辑判断错误 错误二 xff1a 定义较大的全局变量造成 编译
  • Qt中常见的位置和尺寸

    QPoint类的介绍 QPoint 类封装了我们常用用到的坐标点 x y 常用的 API 如下 构造函数 构造一个坐标原点 即 0 0 QPoint QPoint 参数为 x轴坐标 y轴坐标 QPoint QPoint int xpos i
  • 关于QT线程运用的三种方式

    QThread 类函数 QThread 类常用 API 构造函数 QThread QThread QObject parent 61 Q NULLPTR 判断线程中的任务是不是处理完毕了 bool QThread isFinished co
  • 安装Ubuntu22.04+nvidia驱动+CUDA-11.7+GRPMACS patch PLUMED

    首先是Ubuntu22 4的安装 Ubuntu系统一般直接可以使用RUFUS软件制作U盘启动项 xff0c 再依照顺序安装Ubuntu系统 xff0c 这里不赘述 CUDA 11 7 span class token function su
  • Linux部署Nexus私服

    这篇文章主要介绍了Linux搭建自己Nexus私服的实现方法 xff0c 文中通过示例代码介绍的非常详细 xff0c 对大家的学习或者工作具有一定的参考学习价值 一 Nexus介绍 对maven来说仓库分为两类 xff1a 本地仓库和远程仓
  • 元学习和机器学习的对比

    目录 引言机器学习元学习什么是元学习元学习的流程学习学习函数评价学习函数好坏迭代优化 整体框架 元学习和机器学习的对比定义的区别数据集划分的区别损失函数的区别两者之间的共通之处 总结 引言 本篇博客是李宏毅老师元学习课程的笔记 深度学习大部
  • 如何使用C++实现10个数的冒泡排序

    96 96 冒泡排序是一种计算机科学领域的较简单的排序算法 xff0c 是一种简单的适合初学者学习的算法 上图为冒泡排序简单的图片理解 xff0c 将第一个数依次与后面的数进行比较 将数值大的数沉到底部或将数值小的数浮到顶部 简称 大数沉淀
  • 通过Cerebro访问Elasticsearch

    本文以阿里云Elasticsearch为例 xff0c 介绍通过Cerebro访问Elasticsearch的方法 阿里云Elasticsearch兼容开源Elasticsearch的功能 xff0c 以及Security Machine
  • 手把手教您完成Elasticsearch数据迁移

    您可以通过Logstash reindex和OSS等多种方式在Elasticsearch之间迁移数据 本文以阿里云Elasticsearch xff08 简称ES xff09 为例 xff0c 介绍阿里云Elasticsearch间数据迁移
  • Solr集群数据迁移至Elasticsearch

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