solr cloud重新设置schema

来源:互联网 发布:淘宝发货是谁发货 编辑:程序博客网 时间:2024/06/07 07:15

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