zoukankan      html  css  js  c++  java
  • solr与.net系列课程(六)solr定时增量索引与安全

      solr与.net系列课程(六)solr定时增量索引与安全

             solr增量索引的方式,就是一个Http请求,但是这样的请求显然不能满足要求,我们需要的是一个自动的增量索引,solr官方提供了一个定时器实例,来完成增量索引,

    首先下载 apache-solr-dataimportscheduler-1.0.jar,下载地址:http://solr-dataimport-scheduler.googlecode.com/files/apache-solr-dataimportscheduler-1.0.jar

    官方地址有时候访问不了,请点击这个http://pan.baidu.com/s/1pJt3KZD

    下面开始配置

    1.将apache-solr-dataimportscheduler-1.0.jar复制到C:Program FilesApache Software FoundationTomcat 7.0webappssolrWEB-INFlib (C:Program FilesApache Software FoundationTomcat 7.0为tomcat安装路径)

    2.修改C:Program FilesApache Software FoundationTomcat 7.0webappssolrWEB-INF下的web.xml文件, 在servlet节点前面增加

    <listener>
                <listener-class>
                      org.apache.solr.handler.dataimport.scheduler.ApplicationListener
                </listener-class>
      </listener>

    3.将apache-solr-dataimportscheduler-.jar 中 dataimport.properties 取出,放入C:Program FilesApache Software FoundationTomcat 7.0solrconf,没有conf新建一个

    4.重启tomcat即可

    dataimport.properties 配置项说明

    #################################################
    #                                               #
    #       dataimport scheduler properties         #
    #                                               #
    #################################################
    
    #  to sync or not to sync
    #  1 - active; anything else - inactive
    syncEnabled=1
    
    #  which cores to schedule
    #  in a multi-core environment you can decide which cores you want syncronized
    #  leave empty or comment it out if using single-core deployment
    syncCores=game,resource
    
    #  solr server name or IP address
    #  [defaults to localhost if empty]
    server=localhost
    
    #  solr server port
    #  [defaults to 80 if empty]
    port=8080
    
    #  application name/context
    #  [defaults to current ServletContextListener's context (app) name]
    webapp=solr
    
    #  URL params [mandatory]
    #  remainder of URL
    params=/select?qt=/dataimport&command=delta-import&clean=false&commit=true
    
    #  schedule interval
    #  number of minutes between two runs
    #  [defaults to 30 if empty]
    interval=1
    
    #  重做索引的时间间隔,单位分钟,默认7200,即1天; 
    #  为空,为0,或者注释掉:表示永不重做索引
    reBuildIndexInterval=2
    
    #  重做索引的参数
    reBuildIndexParams=/select?qt=/dataimport&command=full-import&clean=true&commit=true
    
    #  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
    #  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期
    reBuildIndexBeginTime=03:10:00

    以上是原文,#后面的是注释,我们来翻译一下

    #################################################
    #                                               #
    #       dataimport scheduler properties         #
    #                                               #
    #################################################
    
    syncEnabled=1
    #要定时的增量索引的核心,多核逗号隔开 collection1, collection2
    syncCores= collection1
    
    # 这个就不用说了,服务器地址
    server=192.168.0.9
    port=8080
    webapp=solr
    # 增量索引执行的命令
    params=/dataimport?command=delta-import&clean=false&commit=true 
    #多长时间执行一次,默认单位分钟
    interval=30
    #下面的,是有人更改了该文件,新加的定时重建索引,原包是不带定时重建索引的,只有增量索引,官方的包是不支持下面三句话的,不需要可以删掉
    reBuildIndexInterval=7200
    reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
    reBuildIndexBeginTime=03:10:00

    如果大家搜索其他的文章,会看见有人说官方提供的包有bug,因为官方是用post提交的,但我经过测试,官方的可以正常使用,以上的在本人的项目中可以正常使用.

    如果想了解在原包中增加定时从建索引的,和该包中的bug的请参考下面的文章  http://www.denghuafeng.com/post-242.html

    好了,上述工作完成后,你的solr就可以定时增量索引了,

    下面我们来讲解一下solr安全性的问题

           了解solr后,大家都知道了,solr是通过Http请求去执行所有操作的,那问题就来了,如果别人知道了你的solr服务器的地址就很危险了,solr的新增和删除也都是通过http请求来完成的,地址暴漏后,你的数据就容易受到攻击了.我这里的解决办法是,设置tomcat的访问权限,只有固定ip可以访问,这样别人就访问不了你的solr了

    修改C:Program FilesApache Software FoundationTomcat 7.0confserver.xml,加入ip限制即可

    全局设置,对Tomcat下所有应用生效
                    server.xml中添加下面一行,重启服务器即可:
                   <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*" deny=""/> 此行放在</Host>之前。

                    例:
                   1,只允许192.168.1.10访问:

                    <Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="192.168.1.10" deny=""/>

                   2,只允许192.168.1.*网段访问:<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*" deny=""/>

                   3,只允许192.168.1.10、192.168.1.30访 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.30" deny=""/>

                   4,根据主机名进行限制:

                      <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="abc.com" deny=""/>

       qq群: 424259523

  • 相关阅读:
    谷歌技术"三宝"之BigTable
    谷歌技术"三宝"之谷歌文件系统
    谷歌技术"三宝"之MapReduce
    大话存储
    ASP.NET之旅--深入浅出解读IIS架构
    好网站
    ArcGIS API for Silverlight学习资料积累
    浏览器滚动条快到底部时自动加载数据
    MVC EF中Attach和Entry区别
    微信开发jssdk入门
  • 原文地址:https://www.cnblogs.com/wenxinghaha/p/4037052.html
Copyright © 2011-2022 走看看