python - 使用源过滤器进行elasticsearch-py搜索

标签 python elasticsearch elasticsearch-py

我正在使用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/

相关文章:

python-3.x - 如何在Elasticsearch中计算每个 token 的总数

sorting - Elasticsearch 没有对结果进行排序

python - 如何在 Beautiful Soup 4.7.1 中使用 "select"?

elasticsearch - 将Neo4j 3.1.5与neo4j-elasticsearch 3.1.4结合使用

elasticsearch - 如何仅在Elasticsearch聚合中和源中仅返回匹配的文本

带有嵌套对象的 Elasticsearch function_score

python - 为什么我的正则表达式也接受字母? ^[0-9\-\+_]

python - 减少函数中变量的正确方法是什么?

python - 无法分配 "<class ' django.contrib.auth.models.User' >": "Model.user"必须是 "User"实例

python - Elasticsearch延迟存储并立即搜索