Solr/Solrj: Как я могу определить общее количество документов в индексе?

Как определить общее количество документов в индексе Solr с помощью Solrj?

После нескольких часов самостоятельных поисков у меня действительно есть ответ (приведенный ниже); Я только публикую этот вопрос, чтобы другим было легче найти решение.

5 ответов

Решение

Вот что я использую. Это каноническое? Есть ли способ лучше?

    SolrQuery q = new SolrQuery("*:*");
    q.setRows(0);  // don't actually request any data
    return server.query(q).getResults().getNumFound();

Ваш ответ на отправку запроса : вероятно, лучшее, наиболее общее решение. Особенно, если вы используете SolrCloud. Тем не менее, есть альтернативное решение, Solr Core Admin API

Вставка всего curl:

      curl -s --negotiate -u: 'hostname:8983/solr/my_collection/query?q=*:*&rows=0' | jq '.response | .numFound'
1868000278

В зависимости от того, как вы его используете, обратите внимание на доступные параметры формата. Для моего случая XML идеален.

      http://localhost:8983/solr/drupal/select?q=*%3A*&rows=0&wt=xml

Вот что я использую, чтобы получить полные документы с использованием JSON/PHP, надеюсь, это поможет

      // Get total number of documents in solr
$solrObj = file_get_contents("http://HOSTNAME:8983/solr/COLLECTION 
NAME/select?q=*:*&rows=0&wt=json");
// var_dump(json_decode($solrObj));
$res_obj = json_decode($solrObj);
$numDocs = $res_obj->response->numFound; 
echo "Total number docs found!: ".$numDocs."<br />";
Другие вопросы по тегам