我試圖做一個ID的批量刪除,它似乎不工作。當我運行我的測試套件並通過Rails控制檯嘗試時,它似乎可以正常工作。然而,我遇到的情況是,有些文件根本沒有被刪除。但是,答覆表明這是成功的。ElasticSearch批量刪除編號
使用tire
0.5.8,curb
0.8.4,ElasticSearch 0.90.2。
query = Tire::Search::Search.new do
query do
filtered do
query { all }
filter(:terms, _id: ids_array)
end
end
end
Curl::Easy.http_delete("#{index.url}/_query?source=#{Tire::Utils.escape(query.to_hash[:query].to_json)}") do |curb|
curb.http_auth_types = :basic
curb.username = ENV["ELASTICSEARCH_USERNAME"]
curb.password = ENV["ELASTICSEARCH_PASSWORD"]
end
的模型映射的樣子:
tire.settings ElasticSearchAnalysis do
mapping _all: { enabled: false } do
indexes :id, type: "integer"
end
end
樣品HTTP DELETE:
DELETE /production_shifts/_query?source=%7B%22filtered%22%3A%7B%22query%22%3A%7B%22match_all%22%3A%7B%7D%7D%2C%22filter%22%3A%7B%22and%22%3A%5B%7B%22terms%22%3A%7B%22_id%22%3A%5B587965789%2C587965791%7D%7D%5D%7D%7D%7D
當轉義,查詢看起來像:
{\"filtered\":{\"query\":{\"match_all\":{}},\"filter\":{\"and\":[{\"terms\":{\"_id\":[587965789,587965791}}]}}}
在過去,我已經與刪除從elasticsearch對象問題,但問題是與ES和不厭。 – jspooner
你的失敗測試看起來像什麼?你添加文件,然後立即刪除它們? – javanna
你能回答人們的問題嗎?或者至少接受一些答案?這對其他用戶會很有用。或者,如果您自己解決了問題,只需將解決方案添加爲答案並接受相同的答案。你可以接受你自己的答案。 –