2016-11-29 11 views
0

Я использую elasticsearch-py (версия версии 2.3) и хотел бы вернуть только поле «название» из всех документов в индексе с отображением: актеры, режиссеры, жанр, сюжет , название, год.поиск elasticsearch-py с использованием исходного фильтра

Я в настоящее время пытается 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'movies'}, {u'_score': 1.0, u'_type': u'movie', u'_id': u'1', u'_source': {}, u'_index': u'movies'}], u'total': 2, u'max_score': 1.0}, u'_shards': {u'successful': 1, u'failed': 0, u'total': 1}, u'took': 2, u'timed_out': False}

Я пробовал различные варианты путей фильтрации и списков полей источника, но не могу показаться, чтобы получить это право.

+0

Возможно, вы хотите просто «_source: ['title']' –

+0

Tried 'messages = es.search (index =" movies ", _source = ['title'])', который возвратил '{u'hits ': { u'hits ': [{u'_score': 1.0, u'_type ': u'movie', u'_id ': u'tt0116996', u'_source ': {u'title': u'Mars Атаки! '}, u'_index': u'movies '}, {u'_score': 1.0, u'_type ': u'movie', u'_id ': u'1', u'_source ': {u' title ': u'I видел фильм однажды сказку'}, u'_index ': u'movies'}], u'total ': 2, u'max_score': 1.0}, u'_shards ': {u' success ': 1, u'failed': 0, u'total ': 1}, u'took': 1, u'timed_out ': False} ', поэтому я все еще что-то упускаю, где-то – nmacc

ответ

0

Вы можете использовать источник фильтрации с:

messages = es.search(index="movies", _source=["title"]) 

, но вам все равно нужно разобрать ответ. Для этого вы можете сделать что-то вроде:

titles = [hit["title"] for hit in messages["hits"]["hits"]["_source"]]] 

Там нет ничего в elasticsearch-ру API (насколько я знаю), что будет разгладьте довольно подробный ответ вы получите от Elasticsearch.