web-dev-qa-db-ja.com

Elasticsearchでタイプのドキュメントを削除する

HTTP/REST APIを使用して、Elasticsearchのタイプ内でインデックスが作成されたすべてのドキュメントを削除したいが、このタイプのマッピングを削除したくない

これを行うには、URLにクエリを作成する方法を教えてください。

19
user2816801

コマンドを実行する前に、インデックス/マッピングの状態。 (elasticsearch head plugin Webインターフェイスから取得したスクリーンショット)

enter image description here

enter image description here

enter image description here

コマンド;

curl -XDELETE 'http://localhost:9200/publishercategoryeu/autocomplete/_query' -d '
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ]
    }
  }
}
'

結果;

enter image description here

コマンドを実行した後、インデックス/マッピング状態。

enter image description here

enter image description here

enter image description here

ご覧のとおり、type(mapping)内でインデックス付けされたすべてのドキュメントを削除しましたが、indexまたはtype(mapping)は削除していません。

16
csonuryilmaz

Match_allクエリを使用したクエリによる単純な削除でうまくいくはずです。あなたはここでより多くの情報をつかむことができます:

クエリAPIで削除

または、タイプ全体を削除して、テンプレートAPIを利用することもできます。テンプレートを含むconfig/templates /フォルダーにファイルをドロップするだけで、ファイルが失われることはありません。マッピングを削除すると、実際にマッピングは失われますが、テンプレートは、インデックスを再度作成するとすぐに再利用されます。ここにいくつかの詳細があります:

テンプレートAPI

編集:新しい削除API: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html

7
DeH

Elasticsearch headプラグインで次のコマンドを使用すると、マッピングを削除せずに、logsインデックスからタイプlogstashのすべてのドキュメントを削除できました。

{"query":{"match_all":{}}}

Deleting documents with Elasticsearch head plugin

ディスクのスペースを解放するには、ドキュメントを削除した後にインデックスを最適化する必要もあります(アクション-> headプラグインのインデックスlogstashの最適化)。

4
asmaier

以前の回答は、Elasticsearchの最新バージョンでは機能しません。 「クエリによる削除」はElasticsearch 2.0から廃止されました。 Elasticsearchのドキュメントには、同時インデックス作成中にOutOfMemoryErrorが発生する可能性があり、プライマリとレプリカが不整合になる可能性があると記載されています。 Github で問題の履歴を追跡したい場合。

typeからすべてのドキュメントを削除するには、複数のステップが必要になります。

  1. 削除する必要のあるドキュメントのIDをすべて見つけます。この操作を実行する最も効率的な方法は、 scroll/scan API を使用して、特定のタイプに一致するすべてのIDを見つけることです。

  2. IDでドキュメントを削除する一括リクエストを発行します。以下に例を示します。

    curl -XPOST 'http://localhost:9200/_bulk' -d '
        { "delete": { "_index": "index", "_type": "type", "_id": "1"}
        { "delete": { "_index": "index", "_type": "type", "_id": "2"}'
    

Curlにテキストファイル入力を提供する場合は、must--data-binaryの代わりに-dフラグを使用することに注意してください。

1
Jadiel de Armas
$ curl -XDELETE 'http://localhost:9200/Twitter/Tweet/_query?q=user:kimchy'

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

" olviere/elastic "ライブラリを使用してgolangでこれを行う場合は、クライアントyourClientyourIndexがあることを前提として、このコードを使用できます。およびyourType

    bq := elastic.NewBoolQuery()
    bq.Must(elastic.NewMatchAllQuery())
    _, err := elastic.NewDeleteByQueryService(yourClient).
        Index(yourIndex).
        Type(yourType).
        Query(bq).
        Do()
0
Darth Egregious