2017-11-30 4 views
0

私はElasticSearch - 1.5で古いバージョンを使用しています。ES 1.5クエリAPIの削除が機能しない

問題:数百万から数百万のような多くの文書を削除する必要があります。私は_idを含め、レコードに関するすべての情報を持っています - _idの配列は私が使いたいものです。

スケールの問題:前回のループでこの削除がありましたが、後続の操作を高速に実行するとESが矛盾します。そこで私は一括削除を探すことにしました。

私はdelete by query APIを利用しようとしています。

ドキュメント状態:

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

を私がやっているもの:

curl -XDELETE 'http://localhost:9200/my_index/logs/_query' -d '{ 
    "query" : { 
    "terms" : { "_id" : ["AVTD6fhLAn35BG25xbZz", "AVTD6fhLAn35BG25xbaC"] } 
    } 
} 
' 

を応答は次のとおりです。

{ 
    "found":false, 
    "_index":"my_index", 
    "_type":"logs", 
    "_id":"_query", 
    "_version":1, 
    "_shards":{"total":2, "successful":1, "failed":0} 
} 

そして、それは書類のいずれかを削除しません。 。これらのレコードを実際に削除して削除するにはどうすればよいですか?

答えて

1

elasticsearch 1.5のdelete_by_query APIについては不明です。 elasticsearchが"_id": "_query"(あなたが掲示した回答から明らかなように)を探しているので、あなたの質問を理解できないようです。あなたは何ができるか

がここに記載されているように、バルクAPIを使用して、次のとおりです。 https://www.elastic.co/guide/en/elasticsearch/reference/1.5/docs-bulk.html

例のようにドキュメントのページでは、あなたが行うことができます:

curl -s -XPOST localhost:9200/_bulk --data-binary @requests; echo 
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } 
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } 
... 

あなたは、ファイルを作成する必要があります(ここでは「要求」)、改行文字で区切られた個々の削除要求を追加します。

+0

答えをありがとう!うん、私はそれを見る;混乱しているが、それは私がドキュメントの言うことを正確に行うので、混乱させてしまう...私はそれがオプションだと思うが、依然としてクエリによる削除ですべてを試してみたい。 –

+0

elasticsearch 1.5については分かりませんが、2.xのdelete_by_queryではdelete_by_queryプラグインのインストール時にのみ機能しました。しかし、約1.5のようなものを見つけることができませんでした。 delete_by_queryでのみ行う理由は何ですか? –

+0

1milのファイルを作成するのはかなり重い/安価な操作であると信じています:) –

関連する問題