solr节点架构使用shard好还是使用单节点好
1个回答
展开全部
基于solr4.4
solr索引过程分析
分布式的索引起始就是在每个sharding中建立索引,在sharding中的索引过程和单节点的情况是一致的。
先说一下solr的单节点的索引过程,
在Http请求的SolrDispatcherFilter filter处理中,获取SolrRequestHandler
handler = core.getRequestHandler( path );
这里的handler是UpdateRequestHandler
<requestHandler name="/update" class="solr.UpdateRequestHandler">
SolrDispatcherFilter.execute( HttpServletRequest req, SolrRequestHandler handler, SolrQueryRequest sreq, SolrQueryResponse rsp)
---SolrCore.execute( handler, req, rsp );
---SolrRequestHandler.handleRequest
在handleRequest实现中,调用handleRequestBody进行处理,处理过程如下:
//生成的processor链有两个,RunUpdateProcessor&LogUpdateProcessor,其中一个在processor包括另外一个processor作为next变量
UpdateRequestProcessorChain processorChain =
req.getCore().getUpdateProcessingChain(params.get(UpdateParams.UPDATE_CHAIN))
UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp);
//用documentLoader对数据参数做加工处理,生成UpdateCommand作为processor的输入参数
documentLoader.load(req, rsp, stream, processor);
----RunUpdateProcessor.processAdd(AddUpdateCommand cmd)
-----DirectUpdateHandler2.addDoc
-----DirectUpdateHandler2.commit
结合lucene的索引的底层的原理,重点对commit这个方法进行分析,
commit,
void commit(CommitUpdateCommand cmd)
solr索引过程分析
分布式的索引起始就是在每个sharding中建立索引,在sharding中的索引过程和单节点的情况是一致的。
先说一下solr的单节点的索引过程,
在Http请求的SolrDispatcherFilter filter处理中,获取SolrRequestHandler
handler = core.getRequestHandler( path );
这里的handler是UpdateRequestHandler
<requestHandler name="/update" class="solr.UpdateRequestHandler">
SolrDispatcherFilter.execute( HttpServletRequest req, SolrRequestHandler handler, SolrQueryRequest sreq, SolrQueryResponse rsp)
---SolrCore.execute( handler, req, rsp );
---SolrRequestHandler.handleRequest
在handleRequest实现中,调用handleRequestBody进行处理,处理过程如下:
//生成的processor链有两个,RunUpdateProcessor&LogUpdateProcessor,其中一个在processor包括另外一个processor作为next变量
UpdateRequestProcessorChain processorChain =
req.getCore().getUpdateProcessingChain(params.get(UpdateParams.UPDATE_CHAIN))
UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp);
//用documentLoader对数据参数做加工处理,生成UpdateCommand作为processor的输入参数
documentLoader.load(req, rsp, stream, processor);
----RunUpdateProcessor.processAdd(AddUpdateCommand cmd)
-----DirectUpdateHandler2.addDoc
-----DirectUpdateHandler2.commit
结合lucene的索引的底层的原理,重点对commit这个方法进行分析,
commit,
void commit(CommitUpdateCommand cmd)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询