SOLR使用手册之操作collection
一.Collections API
参考:https://cwiki.apache.org/confluence/display/solr/Collections+API
因为API比较多,我就不一一列举,只列出比较重要的几个
1.创建collection
官方示例:/admin/collections?action=CREATE&name=name&numShards=number&replicationFactor=number&maxShardsPerNode=number&createNodeSet=nodelist&collection.configName=configname
(1) 我的示例:
http://192.168.66.99:8080/solr/admin/collections?action=CREATE&name=test&numShards=2&replicationFactor=2&maxShardsPerNode=3
name指明collection名称
numShards指明分片数
replicationFactor指明副本数
maxShardsPerNode 每个节点最大分片数(默认为1)
(2)当我们想指定配置文件,索引目录时,可以加入如下参数
property.name=value string No Set core property name to value. See core.properties file contents. 可选参数如下:
key
Description
name
The name of the SolrCore. You'll use this name to reference the SolrCore when running commands with the CoreAdminHandler.
config
The configuration file name for a given core. The default is solrconfig.xml.
schema
The schema file name for a given core. The default is schema.xml
dataDir
Core's data directory as a path relative to the instanceDir, data by default.
configSet If set, the name of the configset to use to configure the core (see Config Sets). properties
The name of the properties file for this core. The value can be an absolute pathname or a path relative to the value of instanceDir.
transient
If true, the core can be unloaded if Solr reaches the transientCacheSize. The default if not specified is false. Cores are unloaded in order of least recently used first.
loadOnStartup
If true, the default if it is not specified, the core will loaded when Solr starts.
coreNodeName
Added in Solr 4.2, this attributes allows naming a core. The name can then be used later if you need to replace a machine with a new one. By assigning the new machine the same coreNodeName as the old core, it will take over for the old SolrCore.
ulogDir
The absolute or relative directory for the update log for this core (SolrCloud)
shard
The shard to assign this core to (SolrCloud)
collection
The name of the collection this core is part of (SolrCloud)
roles
Future param for SolrCloud or a way for users to mark nodes for their own use.
(3)运行http://192.168.66.99:8080/solr/admin/collections?action=CREATE&name=test&numShards=2&replicationFactor=2&maxShardsPerNode=3&property.schema=schema2.xml&property.dataDir=/usr/local/data/solr
以上命令将会创建collection test,指定schema2.xml作为其schema配置文件,并指定/usr/local/data/solr为其数据存放目录
(注意如果指定相关配置文件,首先要向zookeeper中上传相关的配置,运行一下命令将schema2.xml上传到zookeeper
java -classpath .:/usr/local/solr/solrhome-1/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:1181,127.0.0.1:2181,127.0.0.1:3181 -confdir /usr/local/solr/solrhome-1/update/ -confname solr-conf
)
在我本机运行时出现错:
org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:Error CREATEing SolrCore 'test_shard1_replica1': Unable to create core: test_shard1_replica1 Caused by: Lock obtain timed out: NativeFSLock@/usr/local/data/solr/index/write.lock
这是因为3个节点都在我本机,我们将索引目录指定为同一个,这种创建方式默认的数据文件夹会重复,我们可以分别指定分片文件夹
官方示例:/admin/collections?action=DELETE&name=collection
我的示例:http://192.168.66.99:8080/solr/admin/collections?action=DELETE&name=test
3.创建分片
官方示例:/admin/collections?action=CREATESHARD&shard=shardName&collection=name
/admin/collections?action=SPLITSHARD: split a shard into two new shards
/admin/collections?action=RELOAD: reload a collection
/admin/collections?action=SPLITSHARD: split a shard into two new shards
/admin/collections?action=CREATESHARD: create a new shard
/admin/collections?action=DELETESHARD: delete an inactive shard
/admin/collections?action=CREATEALIAS: create or modify an alias for a collection
/admin/collections?action=DELETEALIAS: delete an alias for a collection
/admin/collections?action=DELETEREPLICA: delete a replica of a shard
/admin/collections?action=MIGRATE: Migrate documents to another collection
/admin/collections?action=ADDROLE: Add a specific role to a node in the cluster
/admin/collections?action=REMOVEROLE: Remove an assigned role
/admin/collections?action=OVERSEERSTATUS: Get status and statistics of the overseer
/admin/collections?action=CLUSTERSTATUS: Get cluster status
/admin/collections?action=REQUESTSTATUS: Get the status of a previous asynchronous request
二.Cores API
solr的core在我看来是对shard进行各种操作的,一个core可视为一个shard或者其replica的管理,但是也可以创建collection,
参考:https://cwiki.apache.org/confluence/display/solr/CoreAdminHandler+Parameters+and+Usage
访问方式: http://localhost:8983/solr/admin/cores?action=action,操作有以下几种
可选参数基本与创建collection相同
Parameter
Description
name |
The name of the new core. Same as "name" on the |
instanceDir |
The directory where files for this SolrCore should be stored. Same as |
config |
(Optional) Name of the config file (solrconfig.xml) relative to |
schema |
(Optional) Name of the schema file (schema.xml) relative to |
datadir |
(Optional) Name of the data directory relative to |
configSet | (Optional) Name of the configset to use for this core (see Config Sets) |
collection |
(Optional) The name of the collection to which this core belongs. The default is the name of the core. |
shard |
(Optional) The shard id this core represents. Normally you want to be auto-assigned a shard id. |
property.name=value | (Optional) Sets the core property name to value. See core.properties file contents. |
async | (Optional) Request ID to track this action which will be processed asynchronously |
我的示例:
http://192.168.66.99:8080/solr/admin/cores?action=CREATE&name=test&collection=test&shard=shard1&instanceDir=/usr/local/data/solr/solr-1/test/&schema=schema2.xml
name指明core名称 该名称为solrhome下的文件夹名称,该文件夹下存放该分片的数据文件
collection指明collection名称 若collection 不存在则创建 若存在则判断shard
shard指明分片名称 若shard不存在,则创建 若存在则创建一个该分片的副本
该命令会在 http://192.168.66.99:8080上创建一个名为test的collection,并且创建一个名为shard1的分片,并且该机器为这个分片的leader
http://192.168.66.99:8080/solr/admin/cores?action=CREATE&name=test_shard1_replica_2&collection=test&shard=shard1
该命令会在 http://192.168.66.99:8080上为test创建shard1的副本
3.刷新core
官方示例:http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0
4.重命名core
官方示例:http://localhost:8983/solr/admin/cores?action=RENAME&core=core0&other=core5
5.交换core
官方示例:http://localhost:8983/solr/admin/cores?action=SWAP&core=core1&other=core0
6.下线core
官方示例:http://localhost:8983/solr/admin/cores?action=UNLOAD&core=core0
可选参数:
deleteIndex
: if true, will remove the index when unloading the core.
deleteDataDir
: if true, removes thedata
directory and all sub-directories.deleteInstanceDir
: if true, removes everything related to the core, including the index directory, configuration files, and other related files.async
: if set to a value, makes the call asynchronous. This call can then be tracked using the REQUESTSTATUS API.
7.合并索引
官方示例:
方式1:http://localhost:8983/solr/admin/cores?action=MERGEINDEXES&core=core0&indexDir=/opt/solr/core1/data/index&indexDir=/opt/solr/core2/data/index
方式2:http://localhost:8983/solr/admin/cores?action=mergeindexes&core=core0&srcCore=core1&srcCore=core2
8.切分
官方示例:http://localhost:8983/solr/admin/cores?action=SPLIT&core=core0&targetCore=core1&targetCore=core2
可选参数:
Parameter
Description
Multi-valued
core |
The name of the core to be split. |
false |
path |
The directory path in which a piece of the index will be written. |
true |
targetCore |
The target Solr core to which a piece of the index will be merged |
true |
ranges |
A comma-separated list of hash ranges in hexadecimal format |
false |
split.key |
The key to be used for splitting the index |
false |
async | (Optional) Request ID to track this action which will be processed asynchronously | false |
9.查看请求状态
三.collection实践拓展
上述API提供给了我们一组操作collection和core的方法,现在来想一想实际场景中可能遇到的问题
1.场景1新增collection
搭建完solrcloud后我们首先要考虑的就是建立collection,并对其进行分片,我们有两种方式来做这件事
(1)让solrcloud自动帮我们分片,指定分片名称等,即运行命令:
http://192.168.66.99:8080/solr/admin/collections?action=CREATE&name=test&numShards=2&replicationFactor=2&maxShardsPerNode=3
(2)自己指定每个分片的机器,即分别运行命令:
http://192.168.66.99:7080/solr/admin/cores?action=CREATE&name=test_shard1_replica_1&collection=test&shard=shard1
...
这两种方式均可以指定配置文件,及存储路径
2.场景2-扩容
随着数据量和访问量的增大,我们需要对solrcloud进行扩容,以维持其运行,这又可能包含两种场景
(1)增加一个collection shard
方式一:使用action=SPLITSHARD将一个分片切分成两块,然后再进行重命名等其他操作
方式二:使用cores?action=CREATE&name=test&collection=test&shard=shard1直接创建
(2)增加一个shard的副本
同样使用cores?action=CREATE&name=test&collection=test&shard=shard1直接创建
3.场景3-更换服务器
个人建议如下,先将新服务器加入solrcloud,同步索引文件,然后再下线老服务器,安全快捷直接通过管理界面即可实现
通过以上场景可以发现,使用core api在实际情况下可能更加快捷,因此可以重点学习
4.另外,有时我们在配置solrcloud过程中可能会出现各种配置错误,这种错误会在solrcloud的管理界面进行提示,比如配置collection时指定schema.xml而在zookeeper中并不存在指定的文件
这时solrcloud就会提示:
test3_shard2_replica1: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load core configuration for core test3_shard2_replica1
如何处理这种错误呢:
(1)删除solrhome下的相关文件夹
(2)挨个重启solrcloud节点
SOLR使用手册之操作collection的更多相关文章
- Solr可视化简单的操作
Solr可视化简单的操作 启动solr服务器;在浏览器输入Tomcat启动: http://192.168.191.142:8080/solr/#/ Ø 添加core,首先在存放home的文件下创建 ...
- 利用SolrJ操作solr API完成index操作
使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法 ...
- java 关于操作Collection的一点说明
java 中有一个工具类 Collections 其中的一个方法 static <T> boolean replaceAll(List<T> list, T oldVal, T ...
- solr入门之多线程操作solr中索引字段的解决
涉及的问题: 建索引时有一个字段是该词语出现的次数,这个字段是放在solr里的 而我用的是多线程来进行全量导入的,这里就涉及到了多线程问题 多个线程操作同一个变量时怎样处理? 我是这样子做的 : 首 ...
- Solr 13 - 在URL地址栏中操作Solr集群 - 包括CRUD、别名、切割分片、更新配置
目录 1 创建操作 1.1 创建collection 1.2 创建core 1.3 创建操作中的参数 2 删除操作 3 加载操作 4 查看操作 5 操作集合别名(操作成功, 但未查出区别) 6 切割分 ...
- Solr 18 - 通过SolrJ局部更新Solr中的文档 (原子操作、非覆盖操作)
目录 1 需求分析 2 需求实现 2.1 pom.xml依赖 2.2 Java代码示例 3 补充说明 3.1 关于文档中_version_的取值说明 3.2 store=true/false的区别 1 ...
- solr的客户端操作:使用solrj进行curd操作
导入相关的jar包 <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-s ...
- Solr单机版的安装与使用
.使用Solr实现. 基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户.论坛等系统中常用此方案. .什么是Solr. Solr是A ...
- 基于Solr的空间搜索
如果需要对带经纬度的数据进行检索,比如查找当前所在位置附近1000米的酒店,一种简单的方法就是:获取数据库中的所有酒店数据,按经纬度计算距离,返回距离小于1000米的数据. 这种方式在数据量小的时候比 ...
随机推荐
- C#编写Windows服务程序图文教程(转载)
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...
- http 压缩
HTTP压缩是在Web服务器 和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或 CSS文件.压缩的最大好处就是降低了网络传输的数据量,从 ...
- C#获取客户端相关信息
1.获取Uri参数 2.获取客户端操作系统.浏览器信息 3.获取客户端分辨率 4.C#判断用户是手机访问还是PC访问
- Codeforces Round #350 (Div. 2)A,B,C,D1
A. Holidays time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- Linux知识扫盲
1.发现linux中好多软件以d结尾,d代表什么? d 代表 deamon 守护进程守护进程是运行在Linux服务器后台的一种服务程序.现在比较常用 是 service 这个词.它周期性地执行某种任务 ...
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...
- Ajax调用asp.net后台代码
后台代码: [WebMethod] public static string CreateDate(string name,string age) { return "姓名:"+n ...
- 2014-06-13 jq chart
昨天接到上级说要在检测服务器上增加一个可以根据时间来查看服务器信息的线形图,那我首先就在原有的发送监控信息的功能上增加了把信息存入数据库中,然后再数据库中取得数据显示. 至于线形图的插件是jqx 的c ...
- Android 多渠道打包,上百渠道,秒打签名
具体工具参见:https://github.com/hpu-spring87/MultiSignTools
- Symfony2 Doctrine从现有Database生成Entity(转载自http://blog.it985.com/6809.html)
在我的以前一章Symfony之十分钟入门说了怎样生成数据库,然后设计实体Entity,再同步数据库的表结构,一般我们的顺序都是这样:生成数据库->设计实体Entity->同步数据库表结构. ...