SolrCloud+tomcat7+zookeeper集群配

时间:2019-10-07 07:36来源:编程技术
再一次加载接口 http://127.0.0.1:8080/solr/admin/collections?action=RELOADname=collection1 3. 测量试验分词 删除 http://127.0.0.1:8080s/solr/admin/collections?action=DELETEname=collection1 清单1. SolrCloud.java import java.io

再一次加载接口

http://127.0.0.1:8080/solr/admin/collections?action=RELOAD&name=collection1
3. 测量试验分词

图片 1

删除

http://127.0.0.1:8080s/solr/admin/collections?action=DELETE&name=collection1

清单1. SolrCloud.java

 import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.CloudSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; public class SolrCloud { private static CloudSolrServer cloudSolrServer; private static synchronized CloudSolrServer getCloudSolrServer(final String zkHost) { if (cloudSolrServer == null) { try { cloudSolrServer = new CloudSolrServer; } catch (Exception e) { e.printStackTrace(); } } return cloudSolrServer; } //添加索引 private void addIndex(SolrServer solrServer) { try { SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField("id", "421245251215121452521251"); doc1.addField("title", "张三"); SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField("id", "4224558524254245848524243"); doc2.addField("title", "李四"); SolrInputDocument doc3 = new SolrInputDocument(); doc3.addField("id", "4543543458643541324153453"); doc3.addField("title", "王五"); Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); docs.add; docs.add; docs.add; solrServer.add; solrServer.commit(); } catch (SolrServerException e) { System.out.println("Add docs Exception !!!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { System.out.println("Unknowned Exception!!!!!"); e.printStackTrace(); } } // 搜索 public void search(SolrServer solrServer, String String) { SolrQuery query = new SolrQuery(); query.setQuery; try { QueryResponse response = solrServer.query; SolrDocumentList docs = response.getResults(); for (SolrDocument doc : docs) { for (Map.Entry<String, Object> entry : doc) { System.out.println(entry.getKey()+"="+entry.getValue; } } } catch (SolrServerException e) { e.printStackTrace(); } catch (Exception e) { System.out.println("Unknowned Exception!!!!"); e.printStackTrace(); } } //删除 public void deleteAllIndex(SolrServer solrServer) { try { solrServer.deleteByQuery;// delete everything! solrServer.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { System.out.println("Unknowned Exception !!!!"); e.printStackTrace(); } } public static void main(String[] args) { final String zkHost = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"; final String defaultCollection = "collection1"; final int zkClientTimeout = 20000; final int zkConnectTimeout = 1000; CloudSolrServer cloudSolrServer = getCloudSolrServer; System.out.println("The Cloud SolrServer Instance has benn created!"); cloudSolrServer.setDefaultCollection(defaultCollection); cloudSolrServer.setZkClientTimeout(zkClientTimeout); cloudSolrServer.setZkConnectTimeout(zkConnectTimeout); cloudSolrServer.connect(); System.out.println("The cloud Server has been connected !!!!"); SolrCloud test = new SolrCloud(); test.addIndex(cloudSolrServer); test.search(cloudSolrServer, "id:*"); test.deleteAllIndex(cloudSolrServer); test.search(cloudSolrServer, "id:*"); System.out.println("hashCode"+test.hashCode; cloudSolrServer.shutdown(); }}

连锁阅读

利用Vert.x创设Web服务器和消息系统

RABBITMQ在布满式系统的选拔

小编消息小编系力谱宿云 LeapCloud 团队_云服务研发成员:JinYang Zhang首发地址:

2. 安插solr大旨目录
  • 在自由地方创造solr_home目录,并且把*solr-6.2.0exampleexample-DIHsolr*下的轻便多个core和solr.xml放到solr_home目录下(这里自身选的是solr)

solr_home内容:

图片 2

  • tomcat-8.5.9webappssolrWEB-INFweb.xml中指明solr_home
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:tomcat-8.5.9webappssolrsolr_home</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

创建

http://127.0.0.1:8080/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=2&maxShardsPerNode=2&collection.configName=myconf
1. 引入mysql-connectX.jar包

静心:版本不均等也说不定导致战败,这里运用5.x本子成功

上面作者就开头上学之旅:

首先复制三个tomcat例如:tomcat-server_1 端口:8080 tomcat-server_2 端口:8090 tomcat-server_3 端口:8100 

一、在分级复制solr-4.7.0上面包车型地铁example/webapps的solr.war解压复制到tomcat-server_1、tomcat-server_2、tomcat-server_3的webapp上边为solr,分别创制四个公文夹分别为solr_home_1、solr_home_2、solr_home_3看作贮存solr的数量。将solr-4.7.0下边example/solr/分别复制到solr_home_1、solr_home_2、solr_home_3下面。图2:

图片 3osjp-vertx-fig1-thumb-100159570-orig

二、分别修改solr_home_1、solr_home_2、solr_home_3下面的solr.xml。

 <solr> <solrcloud> <str name="host">${host:}</str> <int name="hostPort">${jetty.port:8080}</int>//端口分别对应tomcat的端口 <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud> <shardHandlerFactory name="shardHandlerFactory" > <int name="socketTimeout">${socketTimeout:0}</int> <int name="connTimeout">${connTimeout:0}</int> </shardHandlerFactory> </solr> 其他solr.xml同理。

三、分别步向tomcat-server_1、tomcat-server_2、tomcat-server_3 下边包车型客车webapp下边包车型地铁solr,然后去改WEB-INF下的web.xml,分别为下边包车型客车清单:

 <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solrCloud/solr_home_1</env-entry-value>//定义solr索引所存的地址 <env-entry-type>java.lang.String</env-entry-type> </env-entry> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solrCloud/solr_home_2</env-entry-value>//定义solr索引所存的地址 <env-entry-type>java.lang.String</env-entry-type> </env-entry> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solrCloud/solr_home_3</env-entry-value>//定义solr索引所存的地址 <env-entry-type>java.lang.String</env-entry-type> </env-entry> 

四、分别在tomcat-server_1、tomcat-server_2、tomcat-server_3的bin下面的catalina.bat的添加

 set java_opts=-Dsolr.home=d:/solrCloud/solr_home_1 -Dbootstrap_confdir=D:/solrCloud/solr_home_1/collection1/conf -Dcollection.configName=myconf -DnumShards=2 -DzkHost=127.0.0.1:2181 set JAVA_OPTS=-Dsolr.home=d:/solrCloud/solr_home_2 -DzkHost=127.0.0.1:2181 set JAVA_OPTS=-Dsolr.home=d:/solrCloud/solr_home_3 -DzkHost=127.0.0.1:2181

五、复制多个zoo比如:

 zk-server_1 端口:2181 zk-server_2 端口:2182 zk-server_3 端口:2183 在zk-server_1、zk-server_2、zk-server_3下面分别建立两个文件夹为data和logs用来存储数据和日志。 分别再data目录下面创建myid,里面分别写1、2、3。 配置D:solrCloudzk-server_1confzoo.cfg如下: dataDir=D:/solrCloud/zk-server_1/data dataLogDir=D:/solrCloud/zk-server_1/logs clientPort=2181 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890 其他两个配置如同上面配置。

图3:

图片 4osjp-vertx-fig1-thumb-100159570-orig

下面我们启动zk_server1、zk_server2、zk_server3.如下图:

图4:

图片 5osjp-vertx-fig1-thumb-100159570-orig运营时,第三个报错是因为找不到任何四个zk,才会报错。这都以没什么的,八个运维好了就不会报错了。上面大家在起步tomcat-server_1、tomcat-server_2、tomcat-server_3。图5:图片 6osjp-vertx-fig1-thumb-100159570-orig图6: 图片 7osjp-vertx-fig1-thumb-100159570-orig

3. 查看配置界面

运维tomcat,输入地方:

http://localhost:8080/solr/index.html

图片 8

图片 9

分界面操作后边再细谈

solrCloud的入眼效能:

重视意义包罗庞大的全文检索,点击呈现,面寻觅,动态聚类,数据库集成,丰裕的文本(如Word,PDF)管理,和空间找寻,并且她有所莫大的可扩展性,提供容错的布满式寻找和目录。

 1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡

图1. Collection大致结构图

图片 10osjp-vertx-fig1-thumb-100159570-orig

 1、下载https://zookeeper.apache.org/ 2、下载http://lucene.apache.org/solr/ 3、下载http://tomcat.apache.org/
2. 安插IKAnalyzer中文分词
  • 把ik-analyzer-solrx.jar复制到*tomcat-8.5.9webappssolrWEB-INFlib*
  • 把如整合包中的如下文件复制*tomcat-8.5.9webappssolrWEB-INFlibclasses*下

图片 11

  • 编辑solr_homesolrconfmanaged-schema,添加
    <fieldType name="text_ik" class="solr.TextField">  
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>  
    </fieldType> 
1. 下载IKAnalyzer中文分词包并解压

http://download.csdn.net/detail/by_false/9645175

整合包内容:

图片 12

solr景况搭建

下载solr6.2和配置jdk,tomcat略过

图片 13

说明:
solr_home:用来放core
core:装索引和数量的地方
document:索引和多少
Field:字段,也正是数据库的字段
FieldType:字段类型

solr导入数据库

1. 配置solr项目
  • 解压下载的solr,把solr-6.2.0serversolr-webapp下的webapp复制到tomcatwebapps下并更名字为solr

solr项目内容:

图片 14

  • solr-6.2.0serverlibext下的jar包复制到tomcat-8.5.9webappssolrWEB-INFlib

    图片 15

  • 把问solr-6.2.0dist下含“dataimport”的jar包也复制到如上地方(该jar包用来导入数据)

  • solr-6.2.0exampleresources下的log4j.properties复制到tomcat-8.5.9webappssolrWEB-INFclasses下(未有classes改目录先成立)

2. 编纂配置文件
  • solr_homesolrconfsolrconfig.xml加多如下标签
<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">solr-data-config.xml</str> <!--该文件名可以任意,但创建的文件要与之对应-->
    </lst>
  </requestHandler>
  • 编辑/创建solr_homesolrconfsolr-data-config.xml,增添如下内容(具体请依据须求陈设)
<dataConfig>
<dataSource name="source1"
            type="JdbcDataSource"
            driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://192.168.88.112:3306/ppppx?characterEncoding=utf-8&autoReconnect=true"
            user="root"
            password="root">
</dataSource>

  <document>
    <entity name="test" dataSource="source1" query="SELECT goods_id,goods_price,goods_name,goods_jingle,store_id,store_name,goods_image FROM ppppx_goods">
        <!--当数据库字段名和managed-schema字段不一致时配置

        <field column="goods_id" name="goods_id" />
        <field column="goods_name" name="goods_name" />
        <field column="goods_jingle" name="goods_jingle" />
        <field column="goods_price" name="goods_price" />
        <field column="store_id" name="store_id" />
        <field column="store_name" name="store_name" />
        <field column="goods_image" name="goods_image" />
        -->

    </entity>
  </document>
</dataConfig>
<!--
    <entity name="entity名称" dataSource="选择一个数据源" query="查询语句,得到的结果会在solr的core中建立索引">
        <field column="数据库表字段" name="业务字段" /> //业务字段需要与managed-schema中的Field对应
    </entity>
-->
  • 编辑solr_homesolrconfmanagedo-schema.xml,添加
<!--业务字段-->
   <field name="goods_id" type="int" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="goods_name" type="text_ik" indexed="true" stored="true" /><!--需要使用中文分词的type选"text_ik"-->
   <field name="goods_price" type="double" indexed="true" stored="true" />
   <field name="goods_jingle" type="text_ik" indexed="true" stored="true" />
   <field name="store_id" type="int" indexed="true" stored="true" />
   <field name="store_name" type="text_ik" indexed="true" stored="true" />
   <field name="goods_image" type="string" indexed="true" stored="true" />

   <!--为copyFiled配置字段-->
   <field name="goods_search" type="text_ik" indexed="true" stored="false" multiValued="true"/>
   <!--为copyFiled配置字段-->
   <!--业务字段-->

修改

<uniqueKey>id</uniqueKey>

为,况且注释掉id字段

<!--<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />-->
<uniqueKey>goods_id</uniqueKey>

注意:编辑完毕后,记得使用utf-8的编码保留

<font color="red">补充:字段详解</font>

solr配置汉语分词

3. 页面导入数据

图片 16

导入只怕出错,能够看tomcat运营时的java窗口

图片 17

  • 查询测验
![](https://upload-images.jianshu.io/upload_images/1901769-0cd293cc2be20d52.png)

编辑:编程技术 本文来源:SolrCloud+tomcat7+zookeeper集群配

关键词: