Как удалить все данные из solr и hbase

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

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

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

Ответ 1

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

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

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

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

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

Обязательно используйте commit=true для фиксации изменений

У вас мало идей с очисткой данных hbase.

Ответ 2

Я использовал этот запрос для удаления всех моих записей, но иногда это необходимо для фиксации.

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

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

Ответ 3

Если вы хотите удалить все данные в 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

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

'<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

Ответ 5

выполните пожар в браузере

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

Ответ 6

Используйте запрос "соответствовать всем документам" в команде delete by query::

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

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'

Ответ 7

Я пришел сюда, чтобы удалить все документы из экземпляра 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, поэтому, пожалуйста, рассмотрите резервное копирование перед использованием этого кода)

Ответ 8

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

curl -X POST -H 'Content-Type: application/json' \
    'http://<host>:<port>/solr/<core>/update?commit=true' \
    -d '{ "delete": {"query":"*:*"} }'

Ответ 9

Если вам нужно очистить все данные, возможно, было бы быстрее воссоздать коллекцию, например.

solrctl --zk localhost:2181/solr collection --delete <collectionName>
solrctl --zk localhost:2181/solr collection --create <collectionName> -s 1

Ответ 10

Я использовал этот запрос для удаления всех моих записей.

http://host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true

Ответ 11

Примеры скручиваний, выше всех, не удались для меня, когда я запускал их с терминала cygwin. Были ошибки, подобные этому, когда я запускал пример script.

curl http://192.168.2.20:7773/solr/CORE1/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst>
</response>
<!-- 
     It looks like it deleted stuff, but it did not go away
     maybe because the committing call failed like so 
-->
curl http://192.168.1.2:7773/solr/CORE1/update --data-binary '' -H 'Content-type:text/xml; charset=utf-8'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">2</int></lst><lst name="error"><str name="msg">Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]</str><int name="code">400</int></lst>
</response>

Мне нужно было использовать delete в цикле для имен ядер, чтобы уничтожить их все в проекте.

Этот запрос ниже работал у меня в терминале Cygwin script.

curl http://192.168.1.2:7773/hpi/CORE1/update?stream.body=<delete><query>*:*</query></delete>&commit=true
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst>
</response>

Эта одна строка заставила данные уйти, и изменение сохранилось.

Ответ 12

При очистке индекса Solr вы также должны выполнить фиксацию и оптимизировать после запуска запроса на удаление. Требуются полные шаги (завиток - все, что вам нужно): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index

Ответ 13

Я сделал закладку JavaScript, которая добавляет ссылку удаления в Solr Admin UI

javascript: (function() {
    var str, $a, new_href, href, upd_str = 'update?stream.body=<delete><query>*:*</query></delete>&commit=true';
    $a = $('#result a#url');
    href = $a.attr('href');
    str = href.match('.+solr\/.+\/(.*)')[1];
    new_href = href.replace(str, upd_str);
    $('#result').prepend('<a id="url_upd" class="address-bar" href="' + new_href + '"><strong>DELETE ALL</strong>   ' + new_href + '</a>');
})();

Ответ 14

Если вы используете Cloudera 5.x, здесь упоминается, что Lily также поддерживает обновления и удаления в реальном времени.

Настройка службы индексатора NRT Lily HBase для использования с поиском Cloudera

Поскольку HBase применяет вставки, обновления и удаления в ячейки таблицы HBase, индексщик сохраняет Solr в соответствии с содержимым таблицы HBase, используя стандартная репликация HBase.

Не уверен, что поддержка truncate 'hTable' также поддерживается.

Кроме того, вы создаете триггер или службу для очистки ваших данных от Solr и HBase на определенном Событии или что-то еще.