我正在使用elasticsearch-py(es版本是2.3),并且想仅返回索引中所有文档的“标题”字段以及映射: Actor 、导演、流派、情节、标题、年份。
我目前正在尝试messages = es.search(index="movies", _source=['hits.hits.title'])
,得到的响应是:
{u'hits': {u'hits': [{u'_score': 1.0, u'_type': u'movie', u'_id': u'tt0116996', u'_source ': {}, u'_index': u'电影'}, {u'_score': 1.0, u'_type': u'电影', u'_id': u'1', u'_source': { }, u'_index': u'电影'}], u'total': 2, u'max_score': 1.0}, u'_shards': {u'成功': 1, u'失败': 0, u 'total': 1}, u'took': 2, u'timed_out': False}
我尝试了不同版本的过滤器路径和源字段列表,但似乎无法正确使用。
最佳答案
您可以通过以下方式应用源过滤:
messages = es.search(index="movies", _source=["title"])
但您仍然需要解析响应。为此,您可以执行以下操作:
titles = [hit["title"] for hit in messages["hits"]["hits"]["_source"]]]
elasticsearch-py API 中没有任何内容(据我所知)可以简化从 Elasticsearch 获得的相当冗长的响应。
关于python - 使用源过滤器进行elasticsearch-py搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871180/