[solr] solr 및 hbase에서 모든 데이터를 삭제하는 방법

solr명령으로 모든 데이터를 삭제하려면 어떻게합니까 ? solr와 함께 사용 lily하고 hbase있습니다.

hbase와 solr 모두에서 데이터를 삭제하려면 어떻게해야합니까?

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



답변

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 데이터를 지우는 데는 많은 생각이 없습니다.


답변

이 요청을 사용하여 모든 레코드를 삭제했지만 때로는이를 커밋해야합니다.

이를 &commit=true위해 요청에 추가 하십시오.

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


답변

다음 명령을 사용하여 삭제할 수 있습니다. 쿼리 별 삭제 명령에서 “모든 문서 일치”쿼리를 사용합니다.

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


답변

json 데이터 게시 (예 : curl 사용)

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


답변

SolrJ를 통해 Solr의 모든 데이터를 삭제하려면 다음과 같이하십시오.

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


답변

쿼리 별 삭제 명령에서 “모든 문서 일치”쿼리를 사용하십시오 .

또한 삭제를 실행 한 후 커밋해야하므로 인덱스를 비우려면 다음 두 명령을 실행하십시오.

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'


답변

명령 줄에서 다음을 사용합니다.

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