仅使用 Elasticsearch 和 Return 源字段进行查询
Query with Elasticsearch and Return source field only
我在 Elasticsearch 上有一些数据并使用 Fastapi GET 调用检索数据。
我使用下面的代码从 Elasticsearch 获取数据
main.py
@app.get("/get_all")
def getData():
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
es.indices.refresh(index="fraction")
res = es.search(index="fraction", body={"query": {"match_all": {}}})
return res
它return这样的数据
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 11,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "fraction",
"_type": "_doc",
"_id": "qx-PtoAB8NYsWRUHEO5X",
"_score": 1,
"_source": {
"company_name": "Fraction",
"floor": "Ground Floor",
"group ": "Group 1",
"camera": "Camera_1",
"videos": "video1"
}
}....
像这种格式返回的数据,但我希望 return _source
字段(company_name,组 ....)。
如何使用 Fastapi GET 调用执行此操作。
您需要将 Elasticsearch 的响应转换为您想要的对象:
这是一种方法:
@app.get("/get_all")
def getData():
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
es.indices.refresh(index="fraction")
res = es.search(index="fraction", body={"query": {"match_all": {}}})
hits = res.get("hits", {}).get("hits", [])
return {
"results": [hit.get("_source") for hit in hits]
}
我在 Elasticsearch 上有一些数据并使用 Fastapi GET 调用检索数据。
我使用下面的代码从 Elasticsearch 获取数据
main.py
@app.get("/get_all")
def getData():
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
es.indices.refresh(index="fraction")
res = es.search(index="fraction", body={"query": {"match_all": {}}})
return res
它return这样的数据
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 11,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "fraction",
"_type": "_doc",
"_id": "qx-PtoAB8NYsWRUHEO5X",
"_score": 1,
"_source": {
"company_name": "Fraction",
"floor": "Ground Floor",
"group ": "Group 1",
"camera": "Camera_1",
"videos": "video1"
}
}....
像这种格式返回的数据,但我希望 return _source
字段(company_name,组 ....)。
如何使用 Fastapi GET 调用执行此操作。
您需要将 Elasticsearch 的响应转换为您想要的对象:
这是一种方法:
@app.get("/get_all")
def getData():
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
es.indices.refresh(index="fraction")
res = es.search(index="fraction", body={"query": {"match_all": {}}})
hits = res.get("hits", {}).get("hits", [])
return {
"results": [hit.get("_source") for hit in hits]
}