2017-12-30 16 views
0

ElasticSearch를 처음 사용합니다. 파이썬을 사용하여 http://localhost:9200/es_index/es_type에서 데이터 그룹을 삭제하려고합니다.파이썬을 사용하여 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을 참조하십시오.