[英]Python api to delete -- elasticsearch
我想在 elasticsearch 中删除一个特定的“_id”,但它不能使用 elasticsearch python api 客户端工作。
doc = {'system_caused': 'office', 'division': 'National', 'addt_notes': '', 'pg': '100', 'date': '2016/02/15 08:56',
'duration': '15 minutes', 'outage_caused': 'Scheduled', 'ticket_num': '1234', 'ticket_type': 'JIRA', 'error_count': '1,000 - 5,000'}
self.es = Elasticsearch(['localhost'], verify_certs=True)
result = self.es.index(index='tickets', doc_type='tickets', body=doc)
doc = {'_id': result['_id']}
result = self.es.delete(
index='tickets', doc_type='tickets', **doc)
插入工作正常,但删除失败。
这是我得到的错误 -
TypeError: delete() got an unexpected keyword argument '_id'
根据源代码, delete
的输入参数包括id
,但不包括_id
。 在这里查看代码。
在dict前面使用**
运算符时,它会扩展为关键字参数。 所以我们可以把它重写为:
result = self.es.delete(
index='tickets', doc_type='tickets',
_id=result['_id'])
因此,您将_id
作为关键字参数之一传递。 正如@Forge所说,我假设您打算在delete
调用中使用id
。
from elasticsearch import Elasticsearch
from elasticsearch import helpers
from elasticsearch_dsl import connections
import pandas as pd
# initialize list of lists
data = [['tom', 10, 'NY'], ['nick', 15, 'NY'], ['juli', 14, 'NY'], ['akshay', 30, 'IND'], ['Amit', 14, 'IND']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Country'])
from elasticsearch import Elasticsearch
from elasticsearch import helpers
##连接到弹性搜索集群
es_client = connections.create_connection(hosts=['http://localhost:9200/'])
def doc_generator(df):
df_iter = df.iterrows()
for index, document in df_iter:
yield {
"_index": 'age_sample',
"_type": "_doc",
"_source": document,
}
helpers.bulk(es_client, doc_generator(df))
from elasticsearch_dsl import Search
s = Search(index='age_sample').query("match", _id='V5A3Y34Bq-Uo6Q7qyfBJ')
response = s.delete()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.