Я ищу ключевое слово machine4 в моем ES. Мой клиент Python просто:
result = es.search('machine4', index='machines')
Результат выглядит так
[
{
"_score": 0.13424811,
"_type": "person",
"_id": "2",
"_source": {
"date": "**20180601**",
"deleted": [],
"changed": [
"machine1",
"machine2",
"machine3"
],
"**added**": [
"**machine4**",
"machine5"
]
},
"_index": "contacts"
},
{
"_score": 0.13424811,
"_type": "person",
"_id": "3",
"_source": {
"date": "**20180701**",
"deleted": [
"machine2"
],
"**changed**": [
"machine1",
"**machine4**",
"machine3"
],
"added": [
"machine7"
]
},
"_index": "contacts"
}
]
Итак, мы можем легко увидеть:
На дату 20180601 г. машина 4 принадлежала доп.
На дату 20180701 года машина 4 принадлежала измененному.
Я могу написать другую функцию для анализа результата. По сути, просматривайте каждый ключ, значение каждого элемента и проверяйте принадлежность искомого ключевого слова, например:
for result in search_results['hits']['hits']:
source_result = result['_source']
for key,value in source_result.items():
if 'machine4' in value:
print key
Однако мне интересно, есть ли у ES API для определения того, к какому ключу / отображению / полю принадлежат искомые ключевые слова? В этом случае добавляется 1-го результата, а изменяется во 2-м результате
Большое спасибо
Alex