solr cloud重新设置schema
solr 配置文件目录结构
单个主机:
<solr-home-directory>/
solr.xml
core_name1/
core.properties
conf/
solrconfig.xml
managed-schema
data/
core_name2/
core.properties
conf/
solrconfig.xml
managed-schema
data/
SolrCloud
<solr-home-directory>/
solr.xml
core_name1/
core.properties
data/
core_name2/
core.properties
data/
比较下发现cloud模式下,没有schema文件。其实文件存在zookeeper上。zookeeper路径:
/core_name/configs/ranger_audits/managed-schema
问题
在solr的控制台添加dynamic filed,name=“resourced”。名字的前后没有“*”。虽然添加成功了,但是solr加载配置的时候抛异常:无法加载resourced,名字前后缺少星号。
查看zookeeper上的配置,发现最后一行多了
<dynamicField name="resourced*" type="string" docValues="true" indexed="true" stored="true"/>
需要把这行去掉,solr才能成功启动。
替换solr的schema
solr提供了操作zookeeper的脚本:zkcli.sh(由于和zookeeper的zkCli.sh名字差不多,最开始我就搞错了,使用了zookeeper的脚本。)
位置:/usr/lib/ambari-infra-solr/server/scripts/cloud-scripts/
命令:./zkcli.sh -z zkhost:2181 -cmd putfile /core_name/configs/ranger_audits/managed-schema ~/myschema.xml
参数:
-z,zookeeper的地址和端口
-cmd putfile:上传文件替换schema。第一个参数是zookeeper路径,第二个参数是本地文件。
ambari启动solr的命令如下。我们可以从命令中找出jvm设置和文件路径设置。
/usr/jdk64/jdk1.8.0_60/bin/java
-server
-Xms1024m
-Xmx2048m
-XX:NewRatio=3
-XX:SurvivorRatio=4
-XX:TargetSurvivorRatio=90
-XX:MaxTenuringThreshold=8
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:ConcGCThreads=4
-XX:ParallelGCThreads=4
-XX:+CMSScavengeBeforeRemark
-XX:PretenureSizeThreshold=64m
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=50
-XX:CMSMaxAbortablePrecleanTime=6000
-XX:+CMSParallelRemarkEnabled
-XX:+ParallelRefProcEnabled
-verbose:gc
-XX:+PrintHeapAtGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-Xloggc:/data/log/ambari-infra-solr/solr_gc.log
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=18886
-Dcom.sun.management.jmxremote.rmi.port=18886
-DzkClientTimeout=60000
-DzkHost=zk1:2181,zk2:2181,zk3:2181,zk4:2181/core_name
-Djetty.port=8886
-DSTOP.PORT=7886
-DSTOP.KEY=solrrocks
-Duser.timezone=UTC
-Djetty.home=/usr/lib/ambari-infra-solr/server
-Dsolr.solr.home=/data/ambari_infra_solr/data
-Dsolr.install.dir=/usr/lib/ambari-infra-solr
-Dlog4j.configuration=file:/etc/ambari-infra-solr/conf/log4j.properties
-XX:OnOutOfMemoryError=/usr/lib/ambari-infra-solr/bin/oom_solr.sh
8886
/data/log/ambari-infra-solr
-jar
start.jar
--module=http
solr schema field api
更新
curl -X POST -H 'Content-type:application/json' --data-binary '{"replace-field" : { "name":"resource2","type":"key_lower_case","multiValued":false }}' http://solrhost:8886/solr/core_name/schema
删除
curl -X POST -H 'Content-type:application/json' --data-binary '{"delete-field" : { "name":"resource2"}}' http://solrhost:8886/solr/core_name/schema
添加
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field" : { "name":"resource2","type":"key_lower_case","multiValued":false}}' http://solrhost:8886/solr/core_name/schema
solr 查询
按照字段值(repo),时间段(evtTime),分页(start,rows)查询solr。
http://solrhost:8886/solr/core_name/select?fq=repo:test_hive&fq=evtTime:[2017-10-23T00:00:00Z+TO+2017-11-01T16:57:34Z]&indent=on&q=*:*&wt=json&start=0&rows=1000