Как удалить все данные из solr и hbase - PullRequest
89 голосов
/ 11 октября 2011

Как мне удалить все данные из solr по команде?Мы используем solr с lily и hbase.

Как мне удалить данные из hbase и solr?

http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data

Ответы [ 16 ]

168 голосов
/ 11 октября 2011

Если вы хотите очистить индекс Solr -

, вы можете запустить http url -

http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true

(замените [core name] на имя ядра, из которого вы хотите удалить),Или используйте это, если публикуете данные xml data:

<delete><query>*:*</query></delete>

Убедитесь, что вы используете commit=true для фиксации изменений

Хотя у вас нет особых идей по очистке данных hbase.

90 голосов
/ 22 ноября 2011

Я использовал этот запрос, чтобы удалить все свои записи, но иногда это необходимо сделать.

Для этого добавьте &commit=true к вашему запросу:

http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
8 голосов
/ 24 июля 2017

Опубликовать данные JSON (например, с помощью curl)

curl -X POST -H 'Content-Type: application/json' \
    'http://<host>:<port>/solr/<core>/update?commit=true' \
    -d '{ "delete": {"query":"*:*"} }'
8 голосов
/ 09 ноября 2015

Вы можете использовать следующие команды для удаления.Используйте запрос «сопоставить все документы» в команде удаления по запросу:

'<delete><query>*:*</query></delete>

После выполнения удаления необходимо также выполнить фиксацию, чтобы для очистки индекса выполнить следующие две команды:

curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'

Другая стратегия заключается в добавлении в ваш браузер двух закладок:

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>


Исходные документы из SOLR:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

8 голосов
/ 30 октября 2012

Если вы хотите удалить все данные в Solr через SolrJ, сделайте что-то вроде этого.

public static void deleteAllSolrData() {
    HttpSolrServer solr = new HttpSolrServer("http://localhost:8080/solr/core/");
    try {
      solr.deleteByQuery("*:*");
    } catch (SolrServerException e) {
      throw new RuntimeException("Failed to delete data in Solr. "
          + e.getMessage(), e);
    } catch (IOException e) {
      throw new RuntimeException("Failed to delete data in Solr. "
          + e.getMessage(), e);
    }
}

Если вы хотите удалить все данные в HBase, сделайте что-то вроде этого.

public static void deleteHBaseTable(String tableName, Configuration conf) {
    HBaseAdmin admin = null;    
    try {
        admin = new HBaseAdmin(conf);
        admin.disableTable(tableName);
        admin.deleteTable(tableName);
    } catch (MasterNotRunningException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } catch (ZooKeeperConnectionException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } catch (IOException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } finally {
        close(admin);
    }
 }
4 голосов
/ 21 мая 2015

Используйте запрос "сопоставить все документы" в команде удаления по запросу: :

Вы также должны подтвердить после запуска удаления, чтобы очистить индекс, выполните следующие две команды:

curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'

curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
3 голосов
/ 19 февраля 2015

запустить это в браузере

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true эта команда удалит все документы в индексе в solr

3 голосов
/ 24 октября 2013

Я пришел сюда, чтобы удалить все документы из экземпляра solr через .Net Framework, используя SolrNet.Вот как я смог это сделать:

Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
    ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();

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

2 голосов
/ 01 февраля 2016

Я использовал этот запрос, чтобы удалить все мои записи.

http://host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true
1 голос
/ 06 сентября 2018

Из командной строки используйте:

 bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
...