유형을 삭제하지 않고 색인 / 유형에서 모든 문서 삭제
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
Delete-By-Query 플러그인은 코어에서 새로운 Query By Query API 구현을 위해 제거되었습니다. 여기를 읽으십시오
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은 답장을 보냈고 답변으로 설정되어 있기 때문에 답변을 편집하고 싶지 않았으며 오류가 발생했을 수 있습니다)
문서가 인덱스에 남아 인덱스 손상을 유발하므로 Elasticsearch 2.x부터는 더 이상 삭제할 수 없습니다.
다음 쿼리를 사용하여 유형에서 문서를 삭제할 수 있습니다.
POST /index/type/_delete_by_query
{
"query" : {
"match_all" : {}
}
}
Kibana 및 Elastic 5.5.2에서이 쿼리를 테스트했습니다.
위의 답변 은 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": {} }}'
ES2 +에 대한 참고 사항
ES 1.5.3부터는 쿼리 별 삭제 API가 더 이상 사용되지 않으며 ES 2.0 이후 완전히 제거되었습니다.
API 대신 Delete By Query는 이제 플러그인 입니다.
In order to use the Delete By Query plugin you must install the plugin on all nodes of the cluster:
sudo bin/plugin install delete-by-query
All of the nodes must be restarted after the installation.
The usage of the plugin is the same as the old API. You don't need to change anything in your queries - this plugin will just make them work.
*For complete information regarding WHY the API was removed you can read more here.
You have these alternatives:
1) Delete a whole index:
curl -XDELETE 'http://localhost:9200/indexName'
example:
curl -XDELETE 'http://localhost:9200/mentorz'
For more details you can find here -https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Delete by Query to those that match:
curl -XDELETE 'http://localhost:9200/mentorz/users/_query' -d
'{
"query":
{
"match_all": {}
}
}'
*Here mentorz is an index name and users is a type
(Reputation not high enough to comment) The second part of John Petrone's answer works - no query needed. It will delete the type and all documents contained in that type, but that can just be re-created whenever you index a new document to that type.
Just to clarify: $ curl -XDELETE 'http://localhost:9200/twitter/tweet'
Note: this does delete the mapping! But as mentioned before, it can be easily re-mapped by creating a new document.
In Kibana Console:
POST calls-xin-test-2/_delete_by_query
{
"query": {
"match_all": {}
}
}
Just to add couple cents to this.
The "delete_by_query" mentioned at the top is still available as a plugin in elasticsearch 2.x.
Although in the latest upcoming version 5.x it will be replaced by "delete by query api"
Elasticsearch 2.3 the option
action.destructive_requires_name: true
in elasticsearch.yml do the trip
curl -XDELETE http://localhost:9200/twitter/tweet
If you want to delete document according to a date. You can use kibana console (v.6.1.2)
POST index_name/_delete_by_query
{
"query" : {
"range" : {
"sendDate" : {
"lte" : "2018-03-06"
}
}
}
}
'IT story' 카테고리의 다른 글
.csproj 파일을 편집하는 방법 (0) | 2020.06.22 |
---|---|
공동 디자인을 사용하여 OSX 앱에 서명하려고하는“사용자 상호 작용이 허용되지 않습니다” (0) | 2020.06.22 |
'int'와 'int'사이에 암시 적 변환이 없으므로 조건식의 유형을 확인할 수 없습니다. (0) | 2020.06.22 |
사용자 정의 리터럴은 C ++에 어떤 새로운 기능을 추가합니까? (0) | 2020.06.22 |
안드로이드 스튜디오에서 APK에 .so 라이브러리 포함 (0) | 2020.06.22 |