ElasticSearch에서 데이터 제거


362

ElasticSearch처음 사용 합니다. ElasticSearch에서 데이터를 제거하는 방법을 알아 내려고 노력 중입니다. 색인을 삭제했습니다. 그러나 실제로 데이터 자체를 제거하지는 않습니다. 내가 본 다른 것들은 쿼리로 삭제 기능을 가리 킵니다 . 그러나 무엇을 쿼리 해야할지 잘 모르겠습니다. 인덱스를 알고 있습니다. 본질적으로, 나는 방법을 알아 내고 싶습니다

DELETE FROM [Index]

Chrome의 PostMan에서. 그러나 나는 운이 없다. 내가 무엇을하든 데이터가 멈추는 것처럼 보입니다. 지금까지 PostMan에서 DELETE HTTP 동사를 사용하고 다음과 같은 URL을 사용하여 색인을 성공적으로 삭제했습니다.

   http://localhost:9200/[indexName]

그러나 데이터 (일명 문서) 자체를 실제로 제거하지는 않습니다.


나는 이것을 우편 배달부와 함께 확인하고 "{"acknowledged ": true}"로 답장을 받았습니다.이 승인 된 응답을 보더라도 걱정하지 마십시오. 지수는 탄성에서 제거됩니다.
bijayk

답변:


428

cURLElasticsearch를 위해 오픈 소스 애호가가 만든 많은 도구 중 하나를 사용 하여 또는 시각적으로 삭제할 수 있습니다 .

cURL 사용

curl -XDELETE localhost:9200/index/type/documentID

예 :

curl -XDELETE localhost:9200/shop/product/1

그런 다음 이것이 성공했는지 여부에 대한 회신을받습니다. 색인을 사용하여 전체 색인 또는 유형을 삭제할 수도 있습니다. 문서 ID를 생략하여 유형을 삭제할 수도 있습니다.

curl -XDELETE localhost:9200/shop/product

색인을 삭제하려는 경우-

curl -XDELETE localhost:9200/shop

특정 명명 규칙 ( *와일드 카드 참고)을 따르는 인덱스를 둘 이상 삭제하려면 -

curl -XDELETE localhost:9200/.mar* 

시각적으로

이 위에서 언급 한 바와 같이 다양한 도구 내가 여기에 목록을 실 거예요,하지만 난 당신이있는 바로 시작 할 수 있습니다 하나로 연결됩니다 여기에 . 이 도구를 KOPF라고합니다. 호스트에 연결하려면 왼쪽 상단의 로고를 클릭하고 클러스터의 URL을 입력하십시오.

연결되면 전체 클러스터를 관리하고 클러스터를 삭제, 최적화 및 조정할 수 있습니다.


내가 아는 ID 3 개를 삭제할 수있는 방법이 있습니까?
HIRA THAKUR

내 현재의 지식에 @JayeshJain. 3 개의 수정 된 curl -XDELETE 명령을 bash 스크립트에 넣고 하나씩 실행하거나 실행할 수 있습니다.
Opster Elasticsearch-네이선

@JayeshJain curl -XDELETE localhost : 9200 / index / type / docid1 // curl -XDELETE localhost : 9200 / index / type / docid2 // curl -XDELETE localhost : 9200 / index / type / docid3
Opster Elasticsearch-Nathan

나는 그것을 같은 방식으로했다. 그러나 여러 문서를 삭제하는 더 똑똑한 방법이 있는지 생각하고 있었다. 필드를 알고 있으면 용어를 사용할 수 있습니다. 그러나이 시나리오에서는 ID로 문서를 삭제하면됩니다. 어쨌든
HIRA THAKUR

2
logstash-eu-% {customer} -2016.11.22와 같이 잘못된 문자가있는 인덱스를 삭제하는 방법 모든 지수 logstash-eu-% {customer}-* 또는 logstash-eu-% *를 삭제하고 싶습니다
Chris F

459

모든 인덱스를 삭제해야 할 경우 유용 할 수 있습니다.

curl -X DELETE 'http://localhost:9200/_all'

파워 쉘 :

Invoke-WebRequest -method DELETE http://localhost:9200/_all

20
이것은 개발에 매우 ​​유용하며 스크래치 (빈) 데이터베이스로 다시 재설정해야합니다. 감사!!
Artistan

3
bash_profile 에서이 명령의 별명을 작성하면 개발에 편리합니다.
user805981

2
'와일드 카드 표현 또는 모든 지수는 허용되지 않습니다'
ZurabWeb

1
그러면 x-pack 액세스 자격 증명을 포함한 모든 데이터가 삭제됩니다.
Gajus

2
Kibana 대시 보드 및 시각화도 삭제되었습니다.
nano

54

문서 (또는 확실한 가이드 ) 당신은 또한 삭제하려면 다음 쿼리를 사용할 수 있다는 것을 말한다 모든 인덱스를 :

curl -XDELETE 'http://localhost:9200/*'

그리고 중요한 메모가 있습니다.

일부의 경우 단일 명령으로 모든 데이터를 삭제하는 기능은 매우 무서운 전망입니다. 실수로 대량 삭제 될 가능성을 없애려면 다음에서 다음을 설정할 수 true있습니다 elasticsearch.yml.

action.destructive_requires_name: true


30

DELETE요청을 보내야합니다

http://[your_host]:9200/[your_index_name_here]

단일 문서를 삭제할 수도 있습니다.

http://[your_host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]

elastichammer 를 사용하는 것이 좋습니다 .

삭제 후 색인이 다음 URL에 여전히 존재하는지 찾아 볼 수 있습니다. http://[your_host]:9200/_stats/

행운을 빕니다!


10 일이 지난 인덱스를 삭제하는 방법은 무엇입니까? 서버가 지원되지 않기 때문에 큐레이터를 사용할 수 없습니다.
biolinh

17

색인을 삭제하면 매핑과 유형이 함께 삭제됩니다. 다음 쿼리로 모든 행을 삭제할 수 있습니다

curl -XDELETE 'localhost:9200/twitter/tweet/_query?pretty' -d'
{
   "query": { 
      "match_all": 
   }
}'

그러나 위 쿼리의 경우 Elasticsearch의 2.0.0-beta1 쿼리별로 삭제가 기본 API에서 제거 된 것처럼 쿼리별로 삭제 플러그인을 설치해야합니다

Install delete-by-query plugin

sudo bin/plugin install delete-by-query

이상

http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/


플러그인을 설치하고 ES를 다시 시작하기 전후에 "uri 및 메소드에 대한 핸들러를 찾을 수 없습니다"라는 메시지가 표시됩니다.
Matthew 읽기

Elasticsearch 6 이상에서는 작동하지 않습니다. 대신 _delete_by_query를 사용하십시오.
Shailesh Pratapwar

17
#list all index:       curl -XGET http://localhost:9200/_cat/indices?v 

여기에 이미지 설명을 입력하십시오

#delete index:         curl -XDELETE 'localhost:9200/index_name'
#delete all indices:   curl -XDELETE 'localhost:9200/_all'
#delete document   :   curl -XDELETE 'localhost:9200/index_name/type_name/document_id'

kibana를 설치 하십시오 . Kibana에는 쿼리를 쉽게 작성하는 데 도움이되는보다 스마트 한 개발 도구가 있습니다.

여기에 이미지 설명을 입력하십시오


1
10 일이 지난 인덱스를 삭제하는 방법은 무엇입니까? 서버가 지원되지 않기 때문에 큐레이터를 사용할 수 없습니다.
biolinh

9
curl -X DELETE 'https://localhost:9200/_all'

변경 httphttps당신이 응용 프로그램에서 SSL 인증서를 사용하는 경우


8

다음과 같이 파이썬에서 색인을 삭제할 수 있습니다

from elasticsearch import Elasticsearch

es = Elasticsearch([{'host':'localhost', 'port':'9200'}])

es.index(index='grades',doc_type='ist_samester',id=1,body={
    "Name":"Programming Fundamentals",
    "Grade":"A"
})

es.indices.delete(index='grades')


7

쿼리에 의한 대량 삭제의 경우 쿼리 API에 의한 특수 삭제를 사용할 수 있습니다 .

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

히스토리에서 API가 삭제되었다가 다시 소개되었습니다.

오랜 역사를 가진 흥미로운 사람.

  1. 그 대답의 첫 번째 버전에서는 elasticsearch 버전 1.6의 설명서를 참조하십시오 . 그 기능은 더 이상 사용되지 않는 것으로 표시되었지만 잘 작동합니다.
  2. elasticsearch 버전 2.0 에서는 별도의 플러그인으로 옮겨졌습니다 . 그리고 플러그인이 된 이유조차도 설명했다 .
  3. 그리고 버전 5.0의 핵심 API에 다시 등장했습니다 !

3
쿼리로 삭제를 사용하는 데주의하십시오. 중요한 이유로 더 이상 사용되지 않습니다. OutOfMemoryError!
user3658423

확실한. 그러나 당신을 위해 일을하거나 메모리가 충분하지 않으면 스파이 수 있습니다.
Hubbitus


5

logstash 인덱스를 삭제하고 curl과 같은 다른 도구와 관련하여 많은 것을 검색했습니다. 그러나 결국 해결책을 찾았습니다. Kibana에 로그인하십시오. 개발 도구 탭으로 이동하여 DELETE /logstash-*쿼리 필드를 입력 하고 녹색 화살표 단추를 누르십시오. "승인"된 경우 : 데이터가 지워 졌음을 나타내는 true입니다.


감사합니다!!! 나는 다른 많은 옵션을 시도했다-이것은 나를 위해 일한 유일한 방법이다.
eladyanai

5

지수를 나열하려면 curl -L localhost:9200/_cat/indices

9200 기본 포트 [다른 포트를 사용하는 경우 포트 변경]

logstash-yyyy-mm-ddformat (logstash- *)로 시작하는 모든 지수를 찾을 수 있습니다

모든 인덱스를보고 사용할 수 있습니다

명령 및 인덱스를 삭제합니다.

curl -XDELETE localhost:9200/index_name (데이터와 인덱스를 모두 제거 할 것입니다).


4

여기에 좋은 답변이 많이 있지만 추가하고 싶은 것이 있습니다.

  • AWS ElasticSearch 서비스 에서 실행중인 경우 인덱스를 삭제 / 삭제할 수 없습니다 . 인덱스를 삭제하는 대신 인덱스를 다시 인덱싱해야합니다 .

AWS ElasticSearch에서 인덱스를 삭제했는데 내 도메인에서 ES 5.1을 실행 중입니다.
gazarsgo

2
AWS ES에서는 인덱스를 열거 나 닫을 수 없습니다. 다시 인덱싱해야합니다. 그러나 인덱스를 삭제할 수 있습니다. Kibana 콘솔을 통해서만 수행했지만 확실히 작동합니다.
Tom Dufall

4

전체 색인, 문서 유형 또는 perticular ID 데이터를 삭제할 수 있습니다. 세 가지 방법이 있습니다.

  1. curl -XDELETE 로컬 호스트 : 9200 / index_name

  2. curl -XDELETE 로컬 호스트 : 9200 / index_name / doc-type

  3. curl -XDELETE 로컬 호스트 : 9200 / index_name / doc-type / documentId

모든 색인을 삭제하려면 와일드 카드로 이동하십시오.


안녕하세요, 쿼리를 실행하기 전에 탄력적 검색을 시작하고 기본적으로 모든 로컬 주소에 바인딩되는지 확인하십시오. localhost 대신 IP 주소를 사용할 수도 있습니다. ES 설정을 한 번 확인한 후 network.bind_host를 확인하여 설정되지 않았거나 0.0.0.0 또는 :: 0으로 설정되어 있는지 또는 네트워크의 올바른 IP 주소로 설정되어 있는지 확인할 수 있습니다.
Gaurav

3

'elasticsearch head'( Chrome 플러그인 ) 에서 DELETE 작업을 사용하여 색인을 삭제할 수도 있습니다 . 크롬에 추가하고 호스트에 연결하십시오. 거기에서 모든 색인을 찾을 수 있으며 삭제하려는 색인 아래의 작업 버튼을 클릭하면 드롭 다운에 삭제 옵션이 있습니다. 그것을 클릭하고 팝업에 DELETE를 입력하십시오. 색인이 삭제됩니다. 'Elasticsearch head'확장은 인덱스 및 데이터를보고 관리하는 쉬운 방법입니다.


2

크롬 확장 탄성 검색 헤드를 사용하여 색인을 삭제할 수 있습니다


2

Kibana Console로 색인을 삭제할 수 있습니다.

콘솔 아이콘

모든 색인을 얻으려면 :

GET /_cat/indices?v

특정 색인을 삭제하려면 다음을 수행하십시오.

DELETE /INDEX_NAME_TO_DELETE

1

당신은 할 수 정말 디스크에서 자신의 파일을 삭제 하나 이상의 인덱스를 삭제 . 예를 들면 다음과 같습니다.

curl -XDELETE localhost:9200/$INDEXNAME

$INDEXNAME인덱스 이름이 될 수있는 곳 (예 users_v2:), N 인덱스는 쉼표로 구분됩니다 (예 :) users_v2,users_v3. 인덱스 패턴 (예 users_*) 또는 _all이를 통해 설정에서 차단하지 않는 이상, 또한, 작동합니다 action.destructive_requires_name: true.

개별 문서를 삭제할 수는 있지만 즉시 삭제되지는 않습니다 . 삭제는 일시 삭제 일 뿐이며 세그먼트 병합 중에 문서는 실제로 제거 됩니다 . 이 프리젠 테이션 에서 세그먼트 및 병합에 대한 많은 세부 사항을 찾을 수 있습니다 있습니다. Solr에 관한 것이지만 병합은 Lucene에서 가져 왔으므로 Elasticsearch에서도 동일한 옵션이 있습니다.

API로 돌아가서 ID별로 개별 문서를 삭제할 수 있습니다 (라우팅을 사용하여 색인을 생성하는 경우 라우팅 값 제공).

curl -XDELETE localhost:9200/users_v2/_doc/user1

또는 쿼리로 :

curl -XPOST -H 'Content-Type: application/json' localhost:9200/users_v2/_delete_by_query -d '{
  "query": {
    "match": {
      "description_field": "bad user"
    }
  }
}'

0

인덱스를 삭제해야한다고 말하면 filebeat-7.6.2-2020.04.30-000001curl DELETE 옵션 ( curl -X DELETE "localhost:9200/filebeat-7.6.2-2020.04.30-000001?pretty")을 사용하여 수행 했으며 아래와 같이 인증 문제가 발생합니다.

{
  "error" : {
    "type" : "security_exception",
    "reason" : "missing authentication credentials for REST request [/filebeat-7.6.2-2020.04.30-000001?pretty]"
  },
  "status" : 401
}

여기서 Elasticsearch에 제공 한 사용자 이름과 비밀번호를 사용하여 curl 요청을 인증해야합니다. 그런 다음 시도하십시오

curl -X DELETE -u myelasticuser:myelasticpassword "localhost:9200/filebeat-7.6.2-2020.04.30-000001?pretty"

의지의 결과는 { "인정"사실} .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.