gpt4 book ai didi

java - : ConcurrentUpdateSolrServer vs HttpSolrServer vs CommonsHttpSolrServer?有什么区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:32 25 4
gpt4 key购买 nike

SolrServer 的以下实现之间有什么区别? :

  1. ConcurrentUpdateSolrServer
  2. HttpSolrServer
  3. CommonsHttpSolrServer(注意:现在是否已弃用?)

documentation 中所述:

It is only recommended to use ConcurrentUpdateSolrServer with /update requests. The class HttpSolrServer is better suited for the query interface.

ConcurrentUpdateSolrServer 的文档建议使用它进行更新,使用 HttpSolrServer 进行查询。为什么是这样?

目前我正在使用 HttpSolrServer 进行所有操作,使用 ConcurrentUpdateSolrServer 进行更新是否会显着提高性能?

最佳答案

我们现在是2017年,Solr社区更名为SolrServer进入SolrClient目前我们有 4 个实现:

  1. CloudSolrClient
  2. ConcurrentUpdateSolrClient
  3. HttpSolrClient
  4. LBHttpSolrClient

文档建议使用 ConcurrentUpdateSolrClient ,因为它将所有更新请求缓冲到 final BlockingQueue<Update> queue; 中,因此更新的操作时间将少于使用 HttpSolrClient ,它的行为是这样的——一旦它收到更新请求,它就会立即触发它。当然,我们相信文档,但很容易得到这个答案,这就是我进行一些性能测试的原因。

但是,首先我将描述客户端的不同操作。如果您使用 add SolrClient 的操作,如果您要创建 HttpSolrClient 则没有区别或 ConcurrentUpdateSolrClient ,因为这两种方法都会做同样的事情。 ConcurrentUpdateSolrClient只有当你明确地做 UpdateRequest 时才会发光

索引维基百科标题的测试结果(code):我的机器是:Intel i5-4670S 3.1 Ghz 16 Gb RAM

ConcurrentUpdateSolrClient (5 threads, 1000 queue size) - 200 seconds    
ConcurrentUpdateSolrClient (5 threads, 10000 queue size) - 150 seconds
ConcurrentUpdateSolrClient (10 threads, 1000 queue size) - 100 seconds
ConcurrentUpdateSolrClient (10 threads, 10000 queue size) - 30 seconds
HttpSolrClient (no bulk) - 7000 seconds
HttpSolrClient (bulk 1000 docs) - 150 seconds
HttpSolrClient (bulk 10000 docs) - 80 seconds

总结:

  1. 如果您以类似方式使用客户端,例如:client.add(doc);ConcurrentUpdateSolrClient由于使用了线程池和队列(也称为批量操作),执行速度至少快了 10-20 倍

  2. 如果您使用 HttpSolrClient ,您仍然可以通过手动创建多个客户端、运行其他线程并使用一些中间存储(如 List)来模仿这种行为。它肯定会提高性能,但需要额外的代码。

  3. 数字很可能没有什么意义,但我希望它能提供一些原始的比较。

关于java - : ConcurrentUpdateSolrServer vs HttpSolrServer vs CommonsHttpSolrServer?有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23639112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com