web-dev-qa-db-ja.com

ElasticSearchからのデータの削除

私は ElasticSearch が初めてです。 ElasticSearchからデータを削除する方法を見つけようとしています。インデックスを削除しました。しかし、実際にはデータ自体が削除されるわけではありません。私が見た他のものは クエリによる削除 機能を指しています。しかし、私は何を問い合わせるべきかさえわかりません。私は自分の索引を知っています。基本的には、

DELETE FROM [Index]

ChromeのPostManから。しかし、私は運がありません。私が何をしても、データはハングアップするようです。これまでのところ、私はPostManの中でDELETE HTTP動詞を使い、次のようなURLを使うことによってインデックスを削除することに成功した。

   http://localhost:9200/[indexName]

しかし、それは実際にデータ(別名docs)自体を削除するようには見えません。

278
user687554

cURLを使用するか、Elasticsearch用にオープンソース愛好家が作成した多数のツールの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* 

視覚的に

上記のようにさまざまなツールがありますが、ここでは説明しませんが、 here にあるすぐに始められるものにリンクします。このツールはKOPFと呼ばれ、あなたのホストに接続するためには左上隅のロゴをクリックしそしてあなたのクラスターのURLを入力してください。

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

328
Nathan

あなたがすべてのインデックスを削除する必要があるなら、これは役に立ちます。

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

パワーシェル:

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

ドキュメント (または The Definitive Guide )によると、次のクエリでも all のインデックスを削除できます。

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

そして重要な注意点があります。

一部の人にとっては、1回のコマンドですべてのデータを削除することは非常に怖い見通しです。偶然の大量削除の可能性を排除したい場合は、elasticsearch.ymlで以下をtrueに設定できます。

action.destructive_requires_name: true

42
skovorodkin

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

http://[your_Host]:9200/[your_index_name_here]

単一の文書を削除することもできます。

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

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

http://[your_Host]:9200/_stats/を:インデックスはまだ、次のURLに存在する場合は削除した後、あなたが調べることができます

がんばろう!

22
Jesper

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

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/ /

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

enter image description here

#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には、クエリを簡単に構築するのに役立つ、より高性能なdevツールがあります。

enter image description here

9
ysk

次のようにして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')
6
Farid ullah

最も簡単な方法!

Endpoint :
http://localhost:9201/Twitter/_delete_by_query

Payload :
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

Twitterはエラスティック検索のインデックスです。

ref; https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

5
Edwin Ikechukwu

ここにはたくさんの良い答えがありますが、追加したいこともあります。

  • AWS ElasticSearchサービスを実行している場合 インデックスを削除/削除することはできません インデックスを削除する代わりに、 にインデックスを付け直す必要があります。
4

クエリによる一括削除には、特別な クエリAPIによる削除 を使用できます。

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

APIが削除されてから再導入されたという歴史の中で

面白い人は長い歴史があります。

  1. その答えの最初の版では私はelasticsearch version 1.6 のドキュメントを参照しています。その機能は廃止予定としてマークされていましたが、うまくいきました。
  2. elasticsearchバージョン2.0)ではそれは別のプラグインに移動されました 。そしてそれがプラグイン 説明 になった理由すらあります。
  3. そしてそれは やはりバージョン5.0のコアAPIで登場
4
Hubbitus

インデックス全体、doc-type、または特定の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

あなたがすべてのインデックスを削除したいなら、そしてワイルドカードのために行きなさい。

3
Gaurav

Curl -L localhostを使用:9200/_cat/indices - インデックスを一覧表示する

9200:デフォルトポート[他のポートを使用している場合はポートを変更してください]

Logstash-yyyy-mm-dd形式で始まるすべてのインデックスが見つかるはずです(logstash- *)。

これで、すべての索引をリストして使用することができます。

Curl -XDELETE localhost:9200/index_name(データとインデックスの両方が削除されます)。

3
rajdeepbs29

私はlogstashインデックスを削除したいと思い、curlのようなさまざまなツールに関して多くを検索しました。しかし、最後に解決策を見つけました。 Kibanaにログインしてください。 [開発ツール]タブに移動し、クエリフィールドにDELETE /logstash-*と入力して緑色の矢印ボタンを押します。 「確認」された場合:応答としてtrue、つまりデータが消去されたことを意味します。

3
Ashish Kumar

'elasticsearch head'のDELETEアクションを使ってインデックスを削除することもできます( Chromeプラグイン )。それをあなたのクロムに追加してあなたのホストに接続してください。そこにあなたはすべてのあなたのインデックスを見つけるでしょう、そしてあなたがあなたが削除したいインデックスの下にあるアクションボタンをクリックするなら、あなたはドロップダウンの中にDELETEオプションを見つけるでしょう。それをクリックして、ポップアップにDELETEを入力してください。あなたのインデックスは削除されます。 'Elasticsearch head'拡張機能は、インデックスとデータを表示および管理するための簡単な方法です。

2
prateek kumar
curl -X DELETE 'https://localhost:9200/_all'

アプリケーションでSSL証明書を使用している場合は、httphttpsに変更します

1
Vikash Chauhan