2011-10-11 47 views

Trả lời

141

Nếu bạn muốn dọn dẹp Solr index -

bạn có thể bắn url http -

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

(thay thế [core name] với tên của lõi bạn muốn xóa từ) . Hoặc sử dụng này nếu đăng dữ liệu dữ liệu xml:

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

Hãy chắc chắn bạn sử dụng commit=true cam kết những thay đổi

Đừng có nhiều ý tưởng với các dữ liệu HBase thanh toán bù trừ mặc dù.

+7

cốt lõi là cần thiết nếu bạn đang sử dụng thiết lập đa lõi. – Jayendra

+1

Câu trả lời này thảo luận cách xóa tất cả các bảng trong HBase: http://stackoverflow.com/questions/3990952/a-script-that-deletes-all-tables-in-hbase. Nếu bạn chỉ muốn xóa dữ liệu trong bảng, bạn có thể cắt bớt chúng thay vì thả chúng. – codingFoo

+0

hiện nó chỉ xóa chỉ mục? hoặc nó sẽ xóa dữ liệu thực? –

88

Tôi đã sử dụng yêu cầu này để xóa tất cả hồ sơ của mình nhưng đôi khi cần phải cam kết điều này.

Cho rằng, thêm &commit=true yêu cầu của bạn:

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

Nếu bạn muốn xóa tất cả các dữ liệu trong Solr qua SolrJ làm điều gì đó như thế này.

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); 
    } 
} 

Nếu bạn muốn xóa tất cả dữ liệu trong HBase, hãy làm như thế này.

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); 
    } 
} 
3

Tôi đến đây để xóa tất cả tài liệu từ cá thể solr thông qua .Net framework bằng SolrNet. Sau đây là cách tôi có thể thực hiện:

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

Điều này đã xóa tất cả tài liệu. (Tôi không chắc chắn nếu điều này có thể được phục hồi, tôi trong học tập và thử nghiệm giai đoạn của Solr, vì vậy hãy cân nhắc sao lưu trước khi sử dụng mã này)

+0

Điều này rất hữu ích. Cảm ơn bạn ! – Karan

3

lửa này trong trình duyệt

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true commmand này sẽ xóa tất cả các tài liệu trong chỉ mục trong solr

+0

Nếu bạn có thể vui lòng chỉnh sửa câu trả lời của mình và giải thích mã bạn đang hiển thị là gì và tại sao/mã đó trả lời câu hỏi như thế nào, nó thực sự có thể hữu ích. –

+0

là câu trả lời ở trên ok ngay bây giờ ..? – bittu

+0

Nó chắc chắn hiểu rõ hơn :). –

1

Nếu bạn cần xóa tất cả dữ liệu, có thể sẽ nhanh hơn để tạo lại bộ sưu tập, ví dụ:

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

Sử dụng "phù hợp với tất cả các tài liệu" truy vấn trong một xóa bởi lệnh truy vấn: :

Bạn cũng phải cam kết sau khi chạy xóa như vậy, để trống các chỉ số, chạy hai lệnh sau đây:

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

tôi đã thực hiện một bookmark JavaScript mà thêm vào liên kết xóa trong Solr quản 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>'); 
 
})();

enter image description here

7

Bạn có thể sử dụng các lệnh sau để xóa. Sử dụng "phù hợp với tất cả các tài liệu" truy vấn trong một xóa bởi lệnh truy vấn:

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

Bạn cũng phải cam kết sau khi chạy xóa như vậy, để trống các chỉ số, chạy hai lệnh sau:

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' 

Một chiến lược khác sẽ có thêm hai bookmark trong trình duyệt của bạn:

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


docs Nguồn từ Solr:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/10148166) – Jost

1

Tôi đã sử dụng truy vấn này để xóa tất cả hồ sơ của tôi.

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

Ví dụ curl ở trên tất cả đều thất bại đối với tôi khi tôi chạy chúng từ thiết bị đầu cuối Cygwin. Có lỗi như thế này khi tôi chạy ví dụ kịch bản.

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> 

Tôi cần sử dụng vòng lặp xóa trên tên lõi để xóa tất cả trong một dự án.

Truy vấn này bên dưới đã hoạt động đối với tôi trong tập lệnh thiết bị đầu cuối Cygwin.

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> 

Dòng này làm cho dữ liệu biến mất và thay đổi vẫn tiếp tục.

0

Nếu bạn đang sử dụng Cloudera 5.x, Ở đây trong tài liệu này được đề cập rằng Lily duy trì cập nhật thời gian thực và xóa cũng.

Configuring the Lily HBase NRT Indexer Service for Use with Cloudera Search

Như HBase áp dụng chèn, cập nhật và xóa dần các tế bào bảng HBase, indexer giữ Solr phù hợp với nội dung bảng HBase, sử dụng tiêu chuẩn sao chép HBase.

Không chắc chắn nếu truncate 'hTable' cũng được hỗ trợ giống nhau.

Khác bạn tạo Trình kích hoạt hoặc Dịch vụ để xóa dữ liệu của bạn khỏi cả Solr và HBase trên một Sự kiện cụ thể hoặc bất kỳ thứ gì.

2

dữ liệu bài json (ví dụ: với curl)

curl -X POST -H 'Content-Type: application/json' \ 
    'http://<host>:<port>/solr/<core>/update?commit=true' \ 
    -d '{ "delete": {"query":"*:*"} }' 
Các vấn đề liên quan