【发布时间】:2021-04-16 10:08:27
【问题描述】:
我编写了一个 Elastic 查询,它将检查条件 (status="APPROVED") 并获取所有 approved_by 对象。
这是我的索引(投资组合):
{
"settings": {},
"mappings": {
"portfolio": {
"properties": {
"status": {
"type": "keyword",
"normalizer": "lcase_ascii_normalizer"
},
"archived_at": {
"type": "date"
},
"approved_by": {
"id": "text",
"name":"text"
}
}
}
}
}
目前我有 60 个对象的状态被批准,所以当我运行查询时,它将显示 60 个对象,但在我的情况下,我只得到一个对象(我调试了代码,总共 60 个对象按预期出现,但是仍然只返回单个对象),请帮助大家。
我的查询:
profiles = client.search(index='portfolio', doc_type='portfolio',
scroll='10m', size=1000,
body={
"query": {"match": {"status": "APPROVED"}}
})
sid = profiles['_scroll_id']
scroll_size = len(profiles['hits']['hits'])
while scroll_size > 0:
for info in profiles['hits']['hits']:
item = info['_source']
approved_by_obj = item.get('approved_by')
if approved_by_obj:
return (jsonify({"approved_by": approved_by_obj}))
预期的 o/p 格式:
{
"approved_by": {
"id": "system",
"name": "system"
}
}
【问题讨论】:
标签: python-3.x loops elasticsearch