ElasticSearchからのデータの削除


362

私はに新たなんだElasticSearch。ElasticSearchからデータを削除する方法を見つけようとしています。インデックスを削除しました。ただし、実際にはデータ自体が削除されているようには見えません。私が見てきた他のことは、クエリによる削除機能を指摘しています。ただし、何を照会すればよいのかさえわかりません。私は自分のインデックスを知っています。本質的に、私は方法を理解したいと思います

DELETE FROM [Index]

ChromeのPostManから。しかし、私には運がありません。私が何をしても、データが滞るようです。これまでのところ、PostManでDELETE HTTP動詞を使用し、次のようなURLを使用して、インデックスを正常に削除しました。

   http://localhost:9200/[indexName]

ただし、実際にはデータ(別名docs)自体は削除されないようです。


私はこれを郵便配達員に確認し、「{"acknowledged":true}」という返信を受け取りました。この確認済みの応答が表示された場合、心配する必要はありません。インデックスがエラスティックから削除されます。
bijayk

回答:


428

cURLElasticsearch用にオープンソースの愛好家が作成した多くのツールの1つを使用して、または視覚的に削除できます。

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を入力してください。

接続すると、クラスター全体を管理し、クラスターを削除、最適化、および調整できるようになります。


私が知っている3つのドキュメントを削除できる方法はありますか?
HIRA THAKUR、2015

@JayeshJain私の現在の知識、いいえ。3つの変更されたcurl -XDELETEコマンドをbashスクリプトに入れて、3つを順番に実行または実行できます。
Opster Elasticsearch-ネイサン、2015年

@JayeshJain so 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でドキュメントを削除する必要があります。とにかくThx
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 2016年

2
'ワイルドカード式またはすべてのインデックスは許可されていません'
ZurabWeb

1
これにより、x-packアクセス認証情報を含むすべてのデータが削除されます。
Gajus

2
これにより、Kibanaダッシュボードとビジュアライゼーションも削除されます
nano

54

ドキュメント(またはDefinitive Guideのは)あなたにも削除する次のクエリを使用することができ、言うすべてのインデックスを:

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

そして重要な注意事項があります:

一部のユーザーにとっては、1つのコマンドですべてのデータを削除する機能は非常に恐ろしい見通しです。偶発的な大量削除の可能性を排除したい場合は、に次のように設定できtrueますelasticsearch.yml

action.destructive_requires_name: true


30

DELETEリクエストを送信する必要があります

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

1つのドキュメントを削除することもできます。

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

elastichammerを使用することをお勧めします。

削除後、次のURLでインデックスがまだ存在するかどうかを調べることができます。 http://[your_host]:9200/_stats/

幸運を!


10日以上経過したインデックスを削除する方法は何ですか?サーバーがサポートされていないため、キュレーターを使用できません。
biolinh 2017

17

インデックスを削除すると、マッピングとタイプが削除されます。次のクエリですべての行を削除できます

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

ただし、上記のクエリの場合は、Elasticsearchの2.0.0-beta1以降、delete-by-queryプラグインをインストールする必要があります。delete-by-queryはメイン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 2017


8

次のようにPythonでインデックスを削除できます

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 2015

承知しました。しかし、それがあなたのために起こったか、あなたが十分な記憶を持っているなら、あなたはスパイするかもしれません。
Hubbitus

1
これはもう廃止予定されていません。elastic.co/guide/en/elasticsearch/reference/6.4/...
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 2017年

2
AWS ESでは、インデックスを開いたり閉じたりすることはできません。インデックスの再作成が必要です。ただし、インデックスは削除できます。私はKibanaコンソールでのみ実行しましたが、確実に機能します。
トムDufall

4

インデックス全体、ドキュメントタイプ、または特定のIDデータを削除できます。これらは3つの方法です。

  1. curl -XDELETE localhost:9200 / index_name

  2. curl -XDELETE localhost:9200 / index_name / doc-type

  3. curl -XDELETE localhost:9200 / index_name / doc-type / documentId

すべてのインデックスを削除したい場合は、ワイルドカードを使用します。


こんにちは、クエリを実行する前にエラスティック検索を開始し、デフォルトですべてのローカルアドレスにバインドされることを確認してください。localhostの代わりにIPアドレスを使用することもできます。10.80.15.45:9200のようにES設定を確認したら、network.bind_hostをチェックインして、設定されていないか、0.0.0.0または:: 0に設定されているか、ネットワークの正しいIPアドレスに設定されていることを確認します。
Gaurav 2018年

3

'elasticsearch head'(Chromeプラグイン)でDELETEアクションを使用してインデックスを削除することもできます。それをChromeに追加して、ホストに接続します。そこにすべてのインデックスが表示され、削除するインデックスの下のアクションボタンをクリックすると、ドロップダウンにDELETEオプションが表示されます。それをクリックして、ポップアップに「DELETE」と入力します。インデックスが削除されます。'Elasticsearch head'拡張は、インデックスとデータを表示および管理する簡単な方法です。


2

クロム拡張elasticsearch-headを使用してインデックスを削除できます


2

インデックスは、Kibanaコンソールで削除できます。

コンソールアイコン

すべてのインデックスを取得するには:

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-000001、curl 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"

結果は{"acknowledged":true}になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.