gpt4 book ai didi

python - 如何发送 Elasticsearch 查询结果的响应API?

转载 作者:行者123 更新时间:2023-12-01 07:35:41 25 4
gpt4 key购买 nike

我创建了一个 Elasticsearch 查询,它给出了正确的结果,现在我想将结果作为搜索 API 的响应发送。

我尝试将响应返回为

return JsonResponse(response, status=200)
return Response(response, safe=False) #error response is not JSON serializable
return HttpResponse(
json.dumps(
{"key": response.title}
),
status=200,
content_type="application/json"
) #AttributeError: 'Response' object has no attribute 'title'

我的代码

def search(request):
if request.method=='GET':
q = request.GET.get('q')

if q:
p = Q("multi_match", query=q, fields=['title', 'preview_path'])
s = PostDocument.search().query(p)
response = s.execute()
else:
response = ''

return HttpResponse(response)

我的PostDocument代码

posts = Index('media')


@posts.doc_type
class PostDocument(DocType):
print('documents.py')

class Meta:
model = Media
fields = [
'title',
'description',
'start_date',
'end_date',
'status',
'media_source',
'on_front_page',
'thumbnail_path',
'preview_path',
'published_date',
'created_at',
'updated_at',
]

预期结果:我想将响应作为 Json 响应发送。

实际结果,当我使用时打印(响应)

<Response: [{'start_date': datetime.datetime(2019, 1, 30, 0, 0), 'status...}]>

最佳答案

您可以使用 json.dumps 创建 JSON 响应:

HttpResponse(
json.dumps(
{"key": response.key}
),
status=200,
content_type="application/json"
)

编辑:由于您的响应对象不是一个对象而是一个对象列表,因此您需要执行以下操作:

response_list = []
for item in response:
response_list.add(
{
"title": item.title,
"description": item.description
}
)

return HttpResponse(
json.dumps(response_list),
status=200,
content_type="application/json"
)

关于python - 如何发送 Elasticsearch 查询结果的响应API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001050/

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