当前位置: 首页 > 面试题库 >

如何使用Java在Solr中获取索引大小

滕夜洛
2023-03-14
问题内容

我需要使用Java在Apache
Solr中获取索引的总大小。以下代码获取文档总数,但是我正在寻找大小。并通过使用ReplicationHandler,我想我可以得到此链接上某人告诉的索引大小。http://lucene.472066.n3.nabble.com/cheking-
the-size-of-the- index-using-solrj-API-s-
td692686.html,
但是我没有得到索引大小。

BufferedWriter out1 = null;
        FileWriter fstream1 = new FileWriter("src/test/resources/solr-document-id-desc.txt");
        out1 = new BufferedWriter(fstream1);
        ApplicationContext context = null;
        context = new ClassPathXmlApplicationContext("application-context.xml");
        CommonsHttpSolrServer solrServer = (CommonsHttpSolrServer) context.getBean("solrServer");
        SolrQuery solrQuery = new SolrQuery().setQuery("*:*");

      QueryResponse rsp = solrServer.query(solrQuery);

        //I am trying to use replicationhandler but I am not able to get the index size using statistics. Is there any way to get the index size..?                        
       ReplicationHandler handler2 = new ReplicationHandler();
       System.out.println( handler2.getDescription());

       NamedList statistics = handler2.getStatistics();
       System.out.println("Statistics   "+ statistics); 
       System.out.println(rsp.getResults().getNumFound());

      Iterator<SolrDocument> iter = rsp.getResults().iterator();

      while (iter.hasNext()) {
                      SolrDocument resultDoc = iter.next();        
                      System.out.println(resultDoc.getFieldNames());
                      String id = (String) resultDoc.getFieldValue("numFound");
                      String description = (String) resultDoc.getFieldValue("description");
                      System.out.println(id+"~~"+description);
                      out1.write(id+"~~"+description);
                      out1.newLine();
      }
      out1.close();

    Any suggestions will be appreciated..

更新代码

ReplicationHandler handler2 = new ReplicationHandler();
System.out.println( handler2.getDescription()); 
 NamedList statistics = handler2.getStatistics();
 System.out.println("Statistics   "+ statistics.get("indexSize"));

问题答案:

indexsize与ReplicationHandler中的统计信息一起提供

org.apache.solr.handler.ReplicationHandler

  public NamedList getStatistics() {
    NamedList list = super.getStatistics();
    if (core != null) {
      list.add("indexSize", NumberUtils.readableSize(getIndexSize()));
    }
  }

您可以使用URL http://localhost:8983/solr/replication?command=details,它返回索引大小。

<lst name="details">
  <str name="indexSize">26.13 KB</str>
  .....
</lst>

不确定它是否可以与ReplicationHandler的实例一起使用,因为它将需要内核和索引的引用。



 类似资料:
  • 问题内容: 我正在使用Solr进行索引和搜索。现在,我的新的数据被索引上elasticsearch。如何使用来自Elasticsearch的Solr索引进行组合搜索? 由于Solr和elasticsearch都是基于Apache Lucene 构建的,因此必须有一种方法/插件来使用Elasticsearch的Solr索引,对吗? 我的尝试: 我为此找到了一条河,但是elasticsearch从1.

  • 我有一个整数列表,像list1=(1,2,3)和list2=(0,1)。 我的列表包含清单1和清单2。它可以包含更多,但对于这个例子,我只取了两个列表。 注意,我在一个沉重的calcul中多次调用这个方法,所以awnser应该考虑到这一点。

  • 问题内容: 我人数众多,并且我对前十个值及其每行的索引感兴趣。但是我没有找到一种体面的方式来操纵矩阵。 这是我当前的解决方案,主要思想是逐行处理它们: 这样做不会充分利用的优势。它更像是一种蛮力解决方案。 问题答案: 在这种情况下,我看不到格式的优点是什么。当然,所有非零值都收集在一个数组中,相应的列索引在中。但是它们处于不同长度的块中。这意味着它们不能并行或以数组步幅进行处理。 一种解决方案是将

  • 我有两个数组 它们的长度都是4。City保存每个城市的名称,temp保存每个城市的平均温度。温度中的温度与城市中的城市顺序相同。所以我的问题是,我怎样才能得到temp中最大int的索引?我想打印出来

  • 我在一个包含3000个文档的核心中有一个Solr索引。 我想基于唯一键PaperID修改整个核心中单个字段的值。 有没有人能为我指点一下...最诚挚的问候

  • 问题内容: 我知道方法rdd.firstwfirst(),它为我提供了RDD中的第一个元素。 还有rdd.take(num)方法,它给了我第一个“ num”元素。 但是,是否有可能通过索引获取元素? 谢谢 问题答案: 首先应为RDD建立索引,这应该是可能的。转换提供了稳定的索引,以其原始顺序对每个元素进行编号。 鉴于: 要按索引查找元素,此形式无用。首先,我们需要使用索引作为键: 现在,可以使用P