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

3 篇文章 0 订阅

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

一、准备

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/目录下。 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老杜095

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值