当前位置: 首页 > 知识库问答 >
问题:

如何在solrj中使用Solr的所有内核

虞承泽
2023-03-14
public static void main(String[] args) throws IOException, SolrServerException {

    HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core1"); //$NON-NLS-1$4
    //HttpSolrClient solrClient =  new HttpSolrClient(args[0]); //$NON-NLS-1$4

    // Empty the database...
    solrClient.deleteByQuery( "*:*" );// delete everything! //$NON-NLS-1$
    System.out.println("cleared"); //$NON-NLS-1$
    ArrayList<SolrInputDocument> docs = new ArrayList<>();

    long starttime = System.currentTimeMillis();
    for (int i = 0; i < 1000000; ++i) { 
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("bat", "book"+i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("name", "The Legend of the Hobbit part 1 " + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id1", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("name1", "The Legend of the Hobbit part 2 " + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id2", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$

        docs.add(doc);

        if (i % 250000 == 0) {
            solrClient.add(docs);
            System.out.println("added "+ i + "documents"); //$NON-NLS-1$ //$NON-NLS-2$
            docs.clear();
        }
    }
    solrClient.add(docs);
    System.out.println("completed adding to Solr. Now commiting.. Please wait"); //$NON-NLS-1$
    solrClient.commit();
    long endtime = System.currentTimeMillis();
    System.out.println("process completed in "+(endtime-starttime)/1000+" seconds"); //$NON-NLS-1$ //$NON-NLS-2$
}

运行代码后,我检查http://localhost:8983/solr/#/~cores/core1并看到1000000个索引文档。

然后我添加了另一个核心(以与核心1相似的方式命名为核心2),然后再次运行该作业,这一次,我看到核心2没有显示任何文档,只有核心1仍然显示。

有没有人可以建议一下如何使用solr的内核来分发和存储文档,这样我就可以更快地索引数据,我的假设是,如果增加内核的数量,索引的速度应该会提高。

多谢了。

共有1个答案

澹台蕴藉
2023-03-14

在您的代码中,它仍然指向Core1。

HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core1"

如果您想获得core2的索引

你需要在这里换衣服

HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core2"
 类似资料:
  • 问题内容: 我们正在使用Solr进行搜索,并将数据分片到多个内核中。我们每周有一个核心数据,因此我们每周都会动态创建和删除核心。 如何查询solr服务器的所有核心列表?JavaDoc说我可以使用,但是我不确定如何构建coreAdminHandler对象。 问题答案: 请求(当然替换您自己的主机/端口)将返回所有内核。

  • 我试图使用solrj构建一个solr查询。根据我对Solr-7.5.0的理解,solrj的所有库和依赖项都应该包含在我的Solr安装中。下面是我的/dist文件夹,后面是我的/dist/solrj-lib文件夹 现在,我的查询将被绑定到一个html post表单,但我想让solrj先工作。这是我全部的solrj 这将无法编译,因为它无法识别我的类(SolrClient、SolrQuery等)。我肯

  • 问题内容: 使用Solr建议程序从solrj获取结果的正确方法是什么? 这是我的要求: 但是我发现很难得到答复。我得到响应的方式是这样的: 这似乎对我从响应中获取的对象有很多假设,并且很难预料到错误。 有没有比这更好更好的方法了? 问题答案: 在新版本中,有一个AskerResponse: https://lucene.apache.org/solr/5_3_1/solr- solrj/org/a

  • 我正在尝试使用同一版本的SolrJ从Java代码连接到运行5.3.1的Solr服务器。我在Eclipse中不断收到一条消息,HttpSolrServer已被弃用,但在任何地方都找不到它已被取代的内容。有人知道我如何使用SolrJ和当前的东西从Java连接到Solr吗?SolrJ文档似乎都表明HttpSolrServer是受支持的方式,但Eclipse对此并不满意。

  • 我正在使用SOLRJ(与SOLR 7一起使用),我的索引为文档内容提供了一些名为content_eng、content_ita的字段...它还提供了一个包含文档完整路径的字段(由和处理)。 用户能够在content_xyz字段中进行搜索,这要归功于以下几行:final SolrQuery query=new SolrQuery();setQuery(searchedText);query.set(

  • 我按照教程使用Solrj(并更新到最新的Solrj版本6.0.1), 1) 下载Solr 2) 使用从命令行启动solr server solr-6.0.1\bin 看起来一切正常,http://localhost:8983/solr/可以在浏览器中查看 3) 已执行HelloWorld Solrj代码: 例外 org.apache.solr.client.solrj.impl.HttpSolrC