[elasticsearch] 유형을 삭제하지 않고 색인 / 유형에서 모든 문서 삭제

deleteByQuery를 통해 특정 유형의 모든 문서를 삭제할 수 있다는 것을 알고 있습니다.

예:

curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}'

그러나 나는 용어가 없으며 어떤 용어에 관계없이 해당 유형의 모든 문서를 삭제하고 싶습니다. 이를 달성하기위한 모범 사례는 무엇입니까? 빈 용어는 작동하지 않습니다.

deleteByQuery에 대한 링크



답변

쿼리에 의한 삭제를 일치와 결합하면 다음과 같이 (귀하의 예를 사용하여) 원하는 것을 모두 수행해야한다고 생각합니다.

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": {} }}'