Фильтр строк на основе пары условий в Elasticsearch в Django
Я работаю над приложением QA (опрос). Я внедрил Elastic Search в приложение. Я хочу фильтровать пользователей на основе их ответов. Предположим, есть вопросы:
- Есть ли у вас паспорт? Да/Нет
- Есть ли у вас водительские права? Да/Нет
Теперь я хочу получить тех пользователей, которые ответили Yes
на оба вопроса.
Мой документ с ответами выглядит следующим образом.
@registry.register_document
class AnswerDocument(Document):
user = fields.ObjectField(properties={
'id': fields.IntegerField(),
'name': fields.TextField(),
})
question = fields.ObjectField(properties={
'id': fields.IntegerField(),
'name': fields.TextField(),
'description': fields.TextField(),
})
class Index:
name = 'answers'
settings = {
'number_of_shards': 1,
'number_of_replicas': 0,
}
class Django:
model = Answer
fields = [
'id',
'yes_no_ans',
]
Я создал выражение запроса, но оно не работает так, как ожидалось.
expression = (Q('bool', should=[
Q('match', question__name='passport'),
Q('match', yes_no_ans='yes'),
], minimum_should_match=2)
)
&
(Q('bool',
should=[
Q('match', question__name='driving license'),
Q('match', yes_no_ans='yes'),
],
minimum_should_match=2))
response = AnswerDocument.search().query(expression).execute()
Может ли кто-нибудь помочь мне с этим? Спасибо.