设为首页 收藏本站
查看: 2680|回复: 6

[经验分享] Solr客户端SolrJ API使用文档-增删改

[复制链接]

尚未签到

发表于 2013-11-27 08:54:11 | 显示全部楼层 |阅读模式
通过之前两篇文章的学习之后,使用solr对mysql进行数据导入以及增量索引应该都会了!
接下来我们学习下如果从Solr中读取我们想要的数据。同时你也可以结合Solr的web界面进行验证,看看你的查询结果是否正确。
环境准备:
从之前下载的solr安装包中解压获取以下jar包
/dist:
apache-solr-solrj-*.jar
/dist/solrj-lib:
commons-codec-1.3.jar

commons-httpclient-3.1.jar

commons-io-1.4.jar

jcl-over-slf4j-1.5.5.jar

slf4j-api-1.5.5.jar
/lib:
slf4j-jdk14-1.5.5.jar
或者如果你通过maven进行jar包管理的。可以使用以下maven库添加所需要的jar包
<dependency>  
               <artifactId>solr-solrj</artifactId>  
               <groupId>org.apache.solr</groupId>  
               <version>1.4.0</version>  
               <type>jar</type>  
               <scope>compile</scope>  
        </dependency>  
如果需要使用到EmbeddedSolrServer,那么需要导入core包。
<dependency>  
               <artifactId>solr-core</artifactId>  
               <groupId>org.apache.solr</groupId>  
               <version>1.4.0</version>  
               <type>jar</type>  
               <scope>compile</scope>  
        </dependency>  
还有两个依赖包<dependency>  
               <groupId>javax.servlet</groupId>  
               <artifactId>servlet-api</artifactId>  
               <version>2.5</version>  
        </dependency>  

<dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-simple</artifactId>  
            <version>1.5.6</version>  
        </dependency>  
环境准备好之后,我们先来看下使用HttpSolrServer创建连接
String url = "http://${ip}:${port}";  
  /*
    HttpSolrServer is thread-safe and if you are using the following constructor,
    you *MUST* re-use the same instance for all requests.  If instances are created on
    the fly, it can cause a connection leak. The recommended practice is to keep a
    static instance of HttpSolrServer per solr server url and share it for all requests.
    See https://issues.apache.org/jira/browse/SOLR-861 for more details
  */  
SolrServer server = new HttpSolrServer( url );  
你还可以在创建连接的时候设置相应的一些连接属性
String url = "http://<span style="font-family: Arial, Helvetica, sans-serif;">${ip}:${port}</span><span style="font-family: Arial, Helvetica, sans-serif;">"</span>  
  HttpSolrServer server = new HttpSolrServer( url );  
  server.setMaxRetries(1); // defaults to 0.  > 1 not recommended.  
  server.setConnectionTimeout(5000); // 5 seconds to establish TCP  
  // Setting the XML response parser is only required for cross  
  // version compatibility and only when one side is 1.4.1 or  
  // earlier and the other side is 3.1 or later.  
  server.setParser(new XMLResponseParser()); // binary parser is used by default  
  // The following settings are provided here for completeness.  
  // They will not normally be required, and should only be used   
  // after consulting javadocs to know whether they are truly required.  
  server.setSoTimeout(1000);  // socket read timeout  
  server.setDefaultMaxConnectionsPerHost(100);  
  server.setMaxTotalConnections(100);  
  server.setFollowRedirects(false);  // defaults to false  
  // allowCompression defaults to false.  
  // Server side must support gzip or deflate for this to have any effect.  
  server.setAllowCompression(true);  
我想大伙很多都是使用实体来接收返回的数据,这样的话方便管理,那么看下SolrJ里面是如何定义实体的。
其实SolrJ中定义实体和平时没有太大区别。就是多了一个Annotation注解,用来标志与solr entry属性对应。
import org.apache.solr.client.solrj.beans.Field;  

public class Item {  
    @Field  
    String id;  

    @Field("cat")  
    String[] categories;  

    @Field  
    List<String> features;  

  }  
除了设置在字段上,我们还可以设置在set方法上。
@Field("cat")  
   public void setCategory(String[] c){  
       this.categories = c;  
   }  
添加数据:
首先获取SolrServer
SolrServer server = new HttpSolrServer("http://${ip}:${port}");  
如果要删除所有的索引的话
server.deleteByQuery( "*:*" );// CAUTION: deletes everything!  
使用我们定义的Bean来往solr插入数据
Item item = new Item();  
    item.id = "one";  
    item.categories =  new String[] { "aaa", "bbb", "ccc" };  
server.addBean(item);  
如果需要一次插入多个的话。插入一个List<Bean>即可
List<Item> beans ;  
  //add Item objects to the list  
  server.addBeans(beans);  
你可以通过以下形式在一个HTTP请求中更改你所有的索引。这个是最优化的方式
HttpSolrServer server = new HttpSolrServer();  
Iterator<SolrInputDocument> iter = new Iterator<SolrInputDocument>(){  
     public boolean hasNext() {  
        boolean result ;  
        // set the result to true false to say if you have more documensts  
        return result;  
      }  

      public SolrInputDocument next() {  
        SolrInputDocument result = null;  
        // construct a new document here and set it to result  
        return result;  
      }  
};  
server.add(iter);  

solrj查询方面会有单独的博文讲解。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-10711-1-1.html 上篇帖子: Apache Solr 4.5.1及MYSQL数据增量索引 下篇帖子: Solr客户端SolrJ API使用文档-查询实例 客户端

尚未签到

发表于 2013-11-28 08:40:13 | 显示全部楼层
月台汽笛声声再催是谁在远走高飞谁在陪人们流眼泪

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-11-29 07:31:49 | 显示全部楼层
脸上的微笑,有谁知道我内心的悲伤.?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-11-30 01:07:41 | 显示全部楼层
敏感的人大多不幸福。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-11-30 11:01:24 | 显示全部楼层
你表面上的欢喜,却从来没有发现你内心的悲伤

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-11-30 22:28:52 | 显示全部楼层
如果回忆像钢铁般坚硬那么我是该微笑还是哭泣,如果钢铁记忆般腐蚀那这里是幻城,还是废墟.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-1 09:07:57 | 显示全部楼层
I ain't freakin' I ain't Fakin' this I ain't freakin’ I ain't Fakin' this

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表