Apache Solr 9.1-(三)集群模式下通过Http API操作Apache Solr

news2024/11/15 18:32:05

Apache Solr 9.1-(三)集群模式下通过Http API操作Apache Solr

Solr是一个基于Apache Lucene的搜索服务器,Apache Lucene是开源的、基于Java的信息检索库,Solr能为用户提供无论在任何时候都可以根据用户的查询请求返回结果,它被设计为一个强大的文档检索引擎。
Apache Solr 9.1对外提供的客户端接口方式主要有

  • 1). SolrJ: 此方案也是官方建议采用的方案。
    优点:集成简单、方便,接口都已被进行了高度封装,使用起来非常方便、简便;
    缺点:对JDK版本有要求,不能低于JDK11,导致应用程序还未升级到JDK11的将无法使用SolrJ;
  • 2). HttpUrl: 此方案通过GET、POST、DELETE等方式通过提交http Url就可以实现所有的接口功能;
    优点:对JDK版本无要求,只要通过http客户端通过url+参数值的方式与solr服务交互,无技术难度;
    缺点:相对SolrJ来说,对接口调用略显繁琐,主要代码量集中于Http客户端,接口部分主要是封装JSON或XML的参数;
  • 本文将针对Solr服务提供Http接口进行验证。

Apache Solr系列文章:
1、Apache Solr 9.1-(一)初体验单机模式运行
2、Apache Solr 9.1-(二)集群模式运行
3、Apache Solr 9.1-(三)集群模式下通过Http API操作Apache Solr

目录

  • Apache Solr 9.1-(三)集群模式下通过Http API操作Apache Solr
  • 一、准备
    • 1、各组件版本说明
    • 2、部署架构
    • 3、硬件环境准备
    • 4、各服务器节点服务部署情况
    • 5、Apache Solr 9.1集群模式环境搭建
  • 二、Zookeeper管理
    • 1、Zookeeper可视化客户端 - ZooInspector
      • 1)、下载
      • 2)、运行
    • 2、将本地配置文件、目录上传到zookeeper集群服务指定的目录下
      • 1)、将本地配置文件上传到zookeeper集群服务指定的目录下
      • 2)、将本地配置文件整个目录上传到zookeeper集群服务指定的目录下
  • 三、Collection操作接口
    • 1、创建Collection
    • 2、删除Collection
    • 3、获取所有Collection
    • 4、备份Collection
    • 5、获取每次备份的信息
    • 6、将备份还原到Collection中
    • 7、删除备份文件
  • 四、Document的操作接口
    • 1、批量插入数据
    • 2、删除数据
      • 1). 根据主键、ID删除Document
      • 2). 根据查询条件删除Document
    • 3、更新数据
    • 4、查询数据

一、准备

1、各组件版本说明

序号软件名称版本说明
1JDK11Apache Solr9.1要求JDK的版本最低为11,可以是openjdk
2Apache Solr9.1基于Apache Lucene搜索服务器
3IK-Analyzer8.5.0中文分词器
4Zookeeper2.4.15
5ZooInspector-Zookeeper可视化客户端

2、部署架构

在这里插入图片描述

3、硬件环境准备

序号IPHostName操作系统说明
1192.168.2.181hnode1CentOS7_x64
2192.168.2.182hnode2CentOS7_x64
3192.168.2.183hnode3CentOS7_x64

4、各服务器节点服务部署情况

序号服务节点Zookeeper节点solr节点
1hnode1
2hnode2
3hnode3

5、Apache Solr 9.1集群模式环境搭建

关与Apache Solr 9.1集群模式环境搭建请参见【Apache Solr 9.1-(二)集群模式运行】

二、Zookeeper管理

1、Zookeeper可视化客户端 - ZooInspector

说明:
ZooInspector提供的功能:
1). 连接/断开Zookeeper服务(单节点服务或集群服务);
2). 查看Zookeeper服务中存放的目录和文件及内容;
3). 新建节点;
4). 删除节点;

1)、下载

点击此处【ZooInspector】进行下载

2)、运行

解压后进入build目录,执行:

java -jar zookeeper-dev-ZooInspector.jar

在这里插入图片描述

说明:
Connect String:Zookeeper服务器地址
1). 如果Zookeeper服务是单节点,则在Connect String处只写一个ip:端口即可;
2). 如果Zookeeer服务是集群模式,则在Connect String处需要将所有节点的地址都写上,并以[,]号分隔;

连接成功如下图所示:
在这里插入图片描述

2、将本地配置文件、目录上传到zookeeper集群服务指定的目录下

在本节中实现上传文件和目录主要是通过Apache Solr中自带的zookeeper客户端工具脚本zkcli.sh1,与Zookeeper安装目录下zkCli.sh2是不同的脚本,本节中使用的是zkcli.sh,并不是Zookeeper的zkCli.sh。

1)、将本地配置文件上传到zookeeper集群服务指定的目录下

[root@hnode1 solr]# cd /opt/solr/solr-9.1.0/server/scripts/cloud-scripts
[root@hnode1 cloud-scripts]# ./zkcli.sh -zkhost hnode1:2181,hnode2:2181,hnode3:2181 -cmd putfile /solr/configs/_default/managed-schema.xml /opt/solr/conf/managed-schema.xml

2)、将本地配置文件整个目录上传到zookeeper集群服务指定的目录下

在本例中将演示将本地/opt/solr/conf整个目录下的文件上传到zookeeper集群服务的/solr/configs/chatmessage目录下,且/solr/configs/chatmessage节点不需要提前创建

[root@hnode1 solr]# cd /opt/solr/solr-9.1.0/server/scripts/cloud-scripts
# 下面通过zkcli.sh脚本连接zookeeper服务的/solr/目录下后,将本地/opt/solr/conf/目录下所有文件以配置文件的方式上传到/solr/configs/chatmessage节点下
[root@hnode1 cloud-scripts]# ./zkcli.sh -zkhost hnode1:2181,hnode2:2181,hnode3:2181/solr -cmd upconfig -confdir /opt/solr/conf -confname chatmessage

在这里插入图片描述

三、Collection操作接口

关与Collection详细的接口说明请参见【Apache Solr 9.1 Collection管理文档】

1、创建Collection

v2版接口

curl -X POST http://localhost:8983/api/collections -H 'Content-Type: application/json' -d '
{
	"create": {
		"name": "chatmessage",
		"config": "chatmessage",
		"numShards": 1
	}
}
  • 上面接口参数中config参数指定的就是Zookeeper服务上存放的此collection对应的配置节点名称,如果不指定将从_default下复制一份做为此collection的配置,当删除此collection时,新复制的配置目录也会一起被删除;
  • 创建Collection的前提是需要先在Zookeeper集群服务上存在对应此Collection的配置,所以创建collection的时候,如果zookeeper上无此collection的配置,需要先将配置上传到zookeeper集群上; 上传方法参见本文 【二、Zookeeper管理 -> 2、将本地配置文件、目录上传到zookeeper集群服务指定的目录下 -> 2)、将本地配置文件整个目录上传到zookeeper集群服务指定的目录下】 的具体操作;

2、删除Collection

curl -X DELETE http://localhost:8983/api/collections/collection名称

3、获取所有Collection

curl -X GET http://localhost:8983/api/collections

返回结果:

{
  "responseHeader":{
    "status":0,
    "QTime":2011},
  "collections":["collection1",
    "example1",
    "example2"]}

4、备份Collection

curl -X POST http://localhost:8983/api/collections -H 'Content-Type: application/json' -d '
  {
    "backup-collection": {
      "name": "techproducts_backup",
      "collection": "techproducts",
      "location": "file:///path/to/my/shared/drive"
    }
  }
'

5、获取每次备份的信息

curl -X POST http://localhost:8983/v2/collections/backups -H 'Content-Type: application/json' -d '
  {
    "list-backups" : {
      "name": "myBackupName",
      "location": "/path/to/my/shared/drive"
    }
  }
'

6、将备份还原到Collection中

可以将备份的Collection的索引数据和关联的配置还原到指定的Collection中

curl -X POST http://localhost:8983/v2/collections/backups -H 'Content-Type: application/json' -d '
  {
    "list-backups" : {
      "name": "myBackupName",
      "location": "/path/to/my/shared/drive"
    }
  }
'

7、删除备份文件

curl -X POST http://localhost:8983/v2/collections/backups -H 'Content-Type: application/json' -d '
  {
    "delete-backups" : {
      "name": "myBackupName",
      "location": "/path/to/my/shared/drive",
      "backupId": 0
    }
  }
'

四、Document的操作接口

Apache Solr 9.1 插入、更新、删除Document记录使用的URL都是:http://solr服务ip:端口/solr/collection名称/update

1、批量插入数据

例如:

curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
[
  {
    "id": "1",
    "title": "Doc 1"
  },
  {
    "id": "2",
    "title": "Doc 2"
  }
]'

2、删除数据

1). 根据主键、ID删除Document

例如:[删除id值为ID的Document]

curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
{"delete": { "id":"ID" }}'

2). 根据查询条件删除Document

例如:[删除所有isRead字段值为0的Document]

curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
{"delete": {"query":"isRead:0"}}'

3、更新数据

例如:

curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/my_collection/update' --data-binary '
[
  {
    "id": "1",
    "title": "Doc 1"
  },
  {
    "id": "2",
    "title": "Doc 2"
  }
]'

4、查询数据

例如:

curl http://localhost:8983/solr/my_collection/query -d '
{
  "query" : "memory",
  "filter" : "inStock:true"
}'

  1. zkcli.sh:是Apache Solr中自带的zookeeper客户端工具脚本,位置在solr-9.1.0/server/scripts/cloud-scripts/目录下。 ↩︎

  2. zkCli.sh:是Zookeeper服务自带的客户端工具脚本,位置在apache-zookeeper-3.8.0-bin/bin/目录下。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理(TCP/IP)(3)

4)滑动窗口 1)咱们滑动窗口的效果就是说在我们尽可能地保证可靠性的情况下,尽可能的提高传输效率2)况且咱们进行发送滑动窗口的本质就是说进行批量的发送数据,咱们尽可能说是把等待ACK的时间总体进行缩短,咱们可以把等待一份ACK的时间变成等待…

凸优化学习:PART1凸集

凸优化学习PART1 一、引言:优化问题简介 优化问题的定义 凸优化是优化的一种,是优化中比较容易的问题。在讲解优化问题前,首先说明什么是优化/数学规划(Optimization/Mathematical Planning)。 优化:从一…

搭建electron开发环境

electron是使用js,html,css构建桌面端应用程序的框架,可以使用electron开发Windows和Mac端应用。 安装nodejs,npm,cnpm 首先需要安装nodejs,npm和cnpm,安装后在命令行输入 node -v 和npm -v,如果输出了版本号,说明已经正常安装。…

数据仓库-数据模型建设方法总结(全)

一、大数据领域建模综述 1.1 为什么需要数据建模 有结构地分类组织和存储是我们面临的一个挑战。 数据模型强调从业务、数据存取和使用角度合理存储数据。 数据模型方法,以便在性能、成本、效率之间取得最佳平衡 成本:良好的数据模型能极大地减少不必…

MyBatis:批量添加记录

MyBatis,一款优秀的ORM映射框架,可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。同时,MyBatis提供了动态SQL特性&#x…

梦熊杯-十二月月赛-白银组题解-C.永恒

C. Problem C.永恒(eternity.cpp) 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述: 「稻妻」是「永恒」的国度。 巴尔泽布认为,如果一个数…

感知机与门电路

前言:简述单层感知机特征及三种表示方式,并用单层感知机描述门电路,借由单层感知机无法处理非线性空间的问题,引出多层感知机。 单层感知机 感知机(preceptron)接收多个输入信号,输出一个信号…

【Kubernetes 企业项目实战】05、基于云原生分布式存储 Ceph 实现 K8s 数据持久化(上)

目录 一、分布式存储 Ceph 基本介绍 1.1 块存储(rbd) 1.2 文件系统 cephfs 1.3 对象存储 1.4 分布式存储的优点 二、Ceph 核心组件介绍 三、准备安装 Ceph 高可用集群的实验环境 3.1 机器配置 3.2 初始化环境 3.3 配置互信 3.4 配置 Ceph 安…

【精选博客】反爬过程中 x-ca-nonce、x-ca-signature 参数的解密过程

本篇博客在 请求头 x-ca-key、x-ca-nonce、x-ca-signature 加密分析第一篇 的基础上继续编写,大家学习时可以从上一篇入手。 文章目录x-ca-nonce 代码实现python 实现 uuidx-ca-signature代码实现在上一篇博客我们已经捕获了参数的JS代码,这篇博客重点要…

Java设计模式-策略模式Strategy

介绍 策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。这算法体现了几个设计原则,第…

这些学习技巧学起来

技巧一:组合多个对象 在PPT页面插入多个图形后,想要移动这些元素时,很多小伙伴会挨个拖动进行位置调整。其实,我们大可以使用快捷键【CtrlG】将多个同类的元素进行组合,使其成为一个图形元素,这样就可以方…

springboot整合mybatis-plus及mybatis-plus分页插件的使用

springboot整合mybatis-plus及mybatis-plus分页插件的使用1. mybatis-plus?2. 引入依赖3. 编写配置文件4. 编写sql表5. mapper层5.1 mybatis-plus做了什么?及创建mapper接口5.2 baseMapper源码6. service层及controller层6.1 service层6.2 controller层6.2.1 page对…

【html】超链接样式

超链接样式超链接样式超链接样式 根据超链接的类型&#xff0c;显示不同图片的前缀 根据 <!doctype html> <html> <head> <meta charset"utf-8"> <title></title> <style type"text/css"> body {background: …

C# 托管堆遭破坏问题溯源分析

一&#xff1a;背景 1. 讲故事 年前遇到了好几例托管堆被损坏的案例&#xff0c;有些运气好一些&#xff0c;从被破坏的托管堆内存现场能观测出大概是什么问题&#xff0c;但更多的情况下是无法做出准确判断的,原因就在于生成的dump是第二现场&#xff0c;借用之前文章的一张…

Exynos4412 移植针对Samsung的Linux-6.1(四)NandFlash卡驱动

系列文章目录 Exynos4412 移植针对Samsung的Linux-6.1&#xff08;一&#xff09;下载、配置、编译Linux-6.1Exynos4412 移植针对Samsung的Linux-6.1&#xff08;二&#xff09;SD卡驱动——解决无法挂载SD卡的根文件系统Exynos4412 移植针对Samsung的Linux-6.1&#xff08;三…

C++基础——C++ 循环

C基础——C 循环C 循环循环类型循环控制语句无限循环C 循环 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂…

计算机自动和声分析

思路&#xff1a;信号→和声 通过计算特征值&#xff08;特征向量&#xff09;区分音频的关键信息 Chroma特征向量 (32 条消息) 什么是 Chroma Features&#xff1f; - 知乎 (zhihu.com) 基本思想&#xff1a;音高听感的周期性 音高每高一个八度&#xff0c;就回到相似的听…

计算机相关专业提升学历的解决方案(博士研究生)

文章目录1、正规全日制博士1.1 申请 - 考核制1.2 硕博连读与直博2、继续教育&#xff08;非全日制&#xff09;2.1 在职博士2.2 同等学力申博3、海外博士3.1 海外博士3.2 中外合作博士博士录取政策 国内博士&#xff0c;没有具体的政策&#xff0c;招生权力下放到各个高校。 往…

Spark 行动算子

文章目录Spark 行动算子1、reduce2、collect3、count4、first5、take6、takeOrdered7、代码示例8、aggregate9、fold10、countByValue & countByKey (wordcount重点)Spark 行动算子 所谓的行动算子&#xff0c;其实就是触发作业执行的方法&#xff0c;之前的转换算子是不能…

Lua 模块与包

Lua 模块与包 参考至菜鸟教程。 模块类似于一个封装库&#xff0c;从 Lua 5.1 开始&#xff0c;Lua 加入了标准的模块管理机制&#xff0c;可以把一些公用的代码放在一个文件里&#xff0c;以 API 接口的形式在其他地方调用&#xff0c;有利于代码的重用和降低代码耦合度。 Lua…