HTTP/REST APIを使用して、Elasticsearchのタイプ内でインデックスが作成されたすべてのドキュメントを削除したいが、このタイプのマッピングを削除したくない
これを行うには、URLにクエリを作成する方法を教えてください。
コマンドを実行する前に、インデックス/マッピングの状態。 (elasticsearch head plugin Webインターフェイスから取得したスクリーンショット)
コマンド;
curl -XDELETE 'http://localhost:9200/publishercategoryeu/autocomplete/_query' -d '
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
]
}
}
}
'
結果;
コマンドを実行した後、インデックス/マッピング状態。
ご覧のとおり、type(mapping)内でインデックス付けされたすべてのドキュメントを削除しましたが、indexまたはtype(mapping)は削除していません。
Match_allクエリを使用したクエリによる単純な削除でうまくいくはずです。あなたはここでより多くの情報をつかむことができます:
または、タイプ全体を削除して、テンプレートAPIを利用することもできます。テンプレートを含むconfig/templates /フォルダーにファイルをドロップするだけで、ファイルが失われることはありません。マッピングを削除すると、実際にマッピングは失われますが、テンプレートは、インデックスを再度作成するとすぐに再利用されます。ここにいくつかの詳細があります:
編集:新しい削除API: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
Elasticsearch headプラグインで次のコマンドを使用すると、マッピングを削除せずに、logs
インデックスからタイプlogstash
のすべてのドキュメントを削除できました。
{"query":{"match_all":{}}}
ディスクのスペースを解放するには、ドキュメントを削除した後にインデックスを最適化する必要もあります(アクション-> headプラグインのインデックスlogstash
の最適化)。
以前の回答は、Elasticsearch
の最新バージョンでは機能しません。 「クエリによる削除」はElasticsearch 2.0
から廃止されました。 Elasticsearch
のドキュメントには、同時インデックス作成中にOutOfMemoryErrorが発生する可能性があり、プライマリとレプリカが不整合になる可能性があると記載されています。 Github で問題の履歴を追跡したい場合。
type
からすべてのドキュメントを削除するには、複数のステップが必要になります。
削除する必要のあるドキュメントのIDをすべて見つけます。この操作を実行する最も効率的な方法は、 scroll/scan API を使用して、特定のタイプに一致するすべてのIDを見つけることです。
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
フラグを使用することに注意してください。
$ curl -XDELETE 'http://localhost:9200/Twitter/Tweet/_query?q=user:kimchy'
$ curl -XDELETE 'http://localhost:9200/Twitter/Tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}
" olviere/elastic "ライブラリを使用してgolangでこれを行う場合は、クライアントyourClient
とyourIndex
があることを前提として、このコードを使用できます。およびyourType
:
bq := elastic.NewBoolQuery()
bq.Must(elastic.NewMatchAllQuery())
_, err := elastic.NewDeleteByQueryService(yourClient).
Index(yourIndex).
Type(yourType).
Query(bq).
Do()