2017-12-30 16 views
0

私はElasticSearchを初めて使用しています。私はhttp://localhost:9200/es_index/es_typeからpythonを使用してデータのグループを削除しようとしています。pythonを使用してelasticsearch内の特定のドキュメントを削除する

from elasticsearch import Elasticsearch 
es = Elasticsearch() 
request_body = { 
     "query": { 
      "ids": { 
       "values": ['a','b','c','d','e','f'] 
      } 
     } 
    } 
es.delete_by_query(index=es_index, body=request_body) 

しかし、私はhttp://localhost:9200/es_index/es_typeをチェックしたときにデータがまだある:

x=['a','b','c','d','e','f']は私が

をコード削除したい_idsのリストであると仮定します。

+0

実行しているESのバージョンは何ですか? – Val

+0

バージョンは6.1.0 –

+1

そして 'elasticsearch-py'のどのバージョンですか? – Val

答えて

0

コメントにESとelasticsearch-pyバージョンを指定してください。また、あなたのコードにes_indexの値を言及していなかったので、正しいものを渡すことを忘れないでください。

インデックスが正しく設定されている場合、delete_by_queryの問題は通常、クエリ自体から発生します。同じボディで簡単にsearchを実行し、目的の結果が得られることを確認してください。間違いを防ぐためには常にそうするのが賢明です。あなたのケースでは

あなたがIDを知っているので、es.deleteを使用して、id値渡しする方が適切である:あなたは、パフォーマンスを向上させるためにbulkヘルパーの使用を検討する必要があり、多くの文書で

for id in ids: 
    es.delete(es_index=index, doc_type=_type, id=id) 

を。答えはhereです。

関連する問題