solrj数据请求流程

本文深入探讨了Solr的Add与Query操作的工作原理,包括如何使用SolrServer的add方法添加文档,以及query方法执行查询的过程。详细解释了从创建请求到发送HTTP请求至接收响应的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、写流程add

1、SolrServer的add方法:创建UpdateRequest对象,UpdateRequest.add(docList)。然后调用UpdateRequest.process(SolrServer)方法。

2、UpdateRequest.process():调用SolrServer(一般是HttpSolrServer)的request方法 (这里设置了ElaspedTime的开始时间)。

3、HttpSolrServer.request(SolrRequest request): 创建HttpPost,并获得request中的ContentStream(即把request中的documents变成<add><doc><field boost="1.0">XXX</field></doc>....</add>的形式) 。然后把ContentStream.getStream()将字符串变成字节流(new ByteArrayInputStream( str.getBytes(DEFAULT_CHARSET) ))放到post请求中,通过httpClient发送给solr服务器。

4、获得solr服务器的响应后的结果是字节流,需要使用ResponseParser(默认是BinaryResponseParser)对结果的字节流进行解析成相应的字符串,并放到UpdateResponse中,并设置response的ElaspedTime

 

二、query流程

1、SolrServer的query方法:创建QueryRequest对象, QueryRequest(QueryParam)。然后调用QueryRequest.process(SolrServer)方法。

2、QueryRequest.process(SolrServer):调用SolrServer(一般是HttpSolrServer)的request方法

3、HttpSolrServer.request(SolrRequest request): 创建HttpGet。

4、获得solr服务器的响应后的结果是字节流,需要使用ResponseParser(默认是BinaryResponseParser)对结果的字节流进行解析成相应的字符串,并放到QueryResponse中。

 

//QueryResponse构造:
  public QueryResponse( NamedList<Object> res , SolrServer solrServer){
    this.setResponse( res );
    this.solrServer = solrServer;
  }



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值