deleteByQuery를 통해 특정 유형의 모든 문서를 삭제할 수 있다는 것을 알고 있습니다.
예:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
그러나 나는 용어가 없으며 어떤 용어에 관계없이 해당 유형의 모든 문서를 삭제하고 싶습니다. 이를 달성하기위한 모범 사례는 무엇입니까? 빈 용어는 작동하지 않습니다.
답변
쿼리에 의한 삭제를 일치와 결합하면 다음과 같이 (귀하의 예를 사용하여) 원하는 것을 모두 수행해야한다고 생각합니다.
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"match_all" : {}
}
}'
또는 유형을 삭제할 수 있습니다.
curl -XDELETE http://localhost:9200/twitter/tweet
답변
코어에서 새로운 쿼리 별 삭제 API 구현을 위해 Delete-By-Query 플러그인이 제거되었습니다. 여기에서 읽으십시오
curl -XPOST 'localhost:9200/twitter/tweet/_delete_by_query?conflicts=proceed&pretty' -d'
{
"query": {
"match_all": {}
}
}'
답변
ElasticSearch 5.x에서는 기본적으로 delete_by_query API가 있습니다.
POST: http://localhost:9200/index/type/_delete_by_query
{
"query": {
"match_all": {}
}
}
답변
John Petrones 답변에서 Torsten Engelbrecht의 의견이 확장되었습니다.
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d
'{
"query":
{
"match_all": {}
}
}'
(John의 답변은 upvotes를 받고 답변으로 설정되어 있으므로 편집하고 싶지 않았으며 오류가 발생했을 수 있습니다)
답변
다음 쿼리를 사용하여 유형에서 문서를 삭제할 수 있습니다.
POST /index/type/_delete_by_query
{
"query" : {
"match_all" : {}
}
}
Kibana 및 Elastic 5.5.2에서이 쿼리를 테스트했습니다.
답변
Elasticsearch 2.x부터는 문서가 인덱스에 남아있어 인덱스 손상이 발생하므로 더 이상 삭제할 수 없습니다.
답변
위의 답변 은 Elasticsearch REST 요청에 대한 엄격한 콘텐츠 유형 검사로 인해 더 이상 ES 6.2.2에서 작동하지 않습니다 . curl
내가 사용하여 종료 명령은 이것이다 :
curl -H'Content-Type: application/json' -XPOST 'localhost:9200/yourindex/_doc/_delete_by_query?conflicts=proceed' -d' { "query": { "match_all": {} }}'