gpt4 book ai didi

elasticsearch - Elasticsearch按查询删除API:Curl正常运行,但无法使用Python(请求)实现相同功能?

转载 作者:行者123 更新时间:2023-12-02 22:48:07 25 4
gpt4 key购买 nike

我正在使用Delete By Query API删除一堆文件。下面的 curl 是完美的工作:

POST /tom-access/doc/_delete_by_query
{
"query": {
"terms": {
"_id": [
"xxxxx",
"yyyyy"
]
}
}
}

现在,我想利用Python中的 requests库实现相同的功能。
import requests,json

url = "http://elastic.tool.com:80/tom-access/doc/_delete_by_query"
headers = {"Content-type": "application/json", "Accept": "application/json", "Authorization": "Basic asdadsasdasdasd"}

data = {
'query':{
'terms':{
'_id':[
'xxxxx',
'yyyyy'
]
}
}
}

try:
r = requests.post(url,
headers=headers,
data=data,
verify=False)
except blablaaa

response_dict = r.json()
print(response_dict)

我得到以下错误:

{'error': {'root_cause': [{'type': 'json_parse_exception', 'reason': "Unrecognized token 'query': was expecting ('true', 'false' or 'null')\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@bc04803; line: 1, column: 7]"}], 'type': 'json_parse_exception', 'reason': "Unrecognized token 'query': was expecting ('true', 'false' or 'null')\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@bc04803; line: 1, column: 7]"}, 'status': 500}



我究竟做错了什么?

最佳答案

我认为您应该尝试在""变量中使用双引号(data)而不是单引号('')。另外,使用json.dumps()转换查询。
这是https://marcobonzanini.com/2015/02/02/how-to-query-elasticsearch-with-python/的示例,其中显示了requests库的用法:

def search(uri, term):
"""Simple Elasticsearch Query"""
query = json.dumps({
"query": {
"match": {
"content": term
}
}
})
response = requests.get(uri, data=query)
results = json.loads(response.text)
return results

还有python elasticsearch-py的官方elasticsearch客户。

关于elasticsearch - Elasticsearch按查询删除API:Curl正常运行,但无法使用Python(请求)实现相同功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55627830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com