Как преобразовать Хит в Документ сasticsearch-dsl? - PullRequest
0 голосов
/ 31 января 2019

Рассмотрим следующее сопоставление для документа в ES.

class MyDoc(elasticseach_dsl.Document):
    id_info = Object(IdInfo)

class IdInfo(elasticseach_dsl.InnerDoc):
    id = Keyword()
    type = Keyword()

С использованиемasticsearch-dsl существует 2 способа получения документа (который мне интересен):

  • Использование MyDoc.search().query().execute(), что приводит к Hit объектам
  • Использование MyDoc.get(), что дает MyDoc объект

Вот проблема, с которой я столкнулся:

Когда я получаю тот же документ из ES, и этот документ отсутствует, например, поле type, я получаю другое поведение:

  • При использовании search(): doc будучи Hit объектом, доступ к doc.type вызывает KeyError
  • При использовании get(): doc будучи объектом MyDoc, доступ к doc.type просто возвращает None

Чтобы обойти это несоответствие, я хотел бы преобразовать экземпляр Hit в экземпляр MyDoc, чтобы я всегда мог использовать синтаксис doc.type без возникновения каких-либо ошибок.

Как я могу это сделать?

В качестве альтернативы, есть ли способ получить доступ к Hit экземплярам с помощью samповедение как MyDoc экземпляров?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...