【发布时间】:2019-06-04 19:48:59
【问题描述】:
我有一个想要移植到 Python 的 cURL 命令。
curl -XGET "http://localhost:9200/nuix-7674bc4a60b74ea7bac8996a98b0cb94;item;schema-version=1/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"regexp": {
"content": "(p)hotos"
}
}
}'
它成功返回一个非错误响应。
这是我在 Python 3.6 中使用 requests 包所尝试的。
import requests
import json
# api-endpoint
url = "http://localhost:9200/nuix-7674bc4a60b74ea7bac8996a98b0cb94;item;schema-version=1/_search"
# headers
headers = {'Content-type': 'application/json'}
# Define JSON String
params = """
{
"query": {
"regexp":{
"content": "(p)hotos"
}
}
}
"""
params = json.loads(params)
print(params)
# sending get request and saving the response as response object
response = requests.get(url=url, params=params, headers=headers)
# extracting data in json format
data = response.json()
print(data['hits']['total'])
print('DONE')
回复response._content 指出此错误:
b'{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"request [/nuix-7674bc4a60b74ea7bac8996a98b0cb94;item;schema-version=1/_search] contains unrecognized parameter: [query]"}],"type":"illegal_argument_exception","reason":"request [/nuix-7674bc4a60b74ea7bac8996a98b0cb94;item;schema-version=1/_search] contains unrecognized parameter: [query]"},"status":400}'
设置params的正确方法是什么?
【问题讨论】:
-
在Windows中使用cURL,需要像这样调整引号:
curl -XGET "http://localhost:9200/nuix-7674bc4a60b74ea7bac8996a98b0cb94;item;schema-version=1/_search" -H "Content-Type: application/json" -d "{\"query\": {\"regexp\": {\"content\": \"(p)hotos\"}}}"
标签: python json elasticsearch curl get