Я храню ответы на опросы в своей ES, так что получается, что люди используют мобильное приложение для заполнения форм опроса, эти ответы отправляются на сервер, а затем сохраняются в ES следующим образом, вот как ответы на вопросыв форме хранятся
answers {
"uKeCywV4SAgD8YGReSkn" : {
"_id" : "b465de5e-5468-40fe-8a8d-fc02083",
"responseVersionNumber" : 1,
"options" : [
{
"id" : "32700fb5-51d2-4617-b65f-831b83c88080"
},
{
"id" : "32700fb5-51d2-4617-b65f-831b83c87777"
}
}
документ answers
содержит ответы на каждый вопрос под своим идентификатором вопроса.Строка, которую вы видите ниже, является идентификатором вопроса, так же как все остальные ответы хранятся в ES под соответствующими идентификаторами вопросов в соответствующих документах для этого ответа.
Теперь я хочу выполнить поиск по этимответы, приведенный выше ответный ответ имеет тип mcq multi-select, так как вы можете видеть текстовое поле (которое содержит) значения ответа (то есть хобби пользователя Gardening и Sports) и массив опций id, оба могут использоваться для этого,Я могу отправить массив идентификаторов опций из моего веб-приложения в ES или текстовые значения (или метки опций, как мы их называем), а также использовать идентификаторы вопросов, например, скажем, у меня есть вопрос с идентификатором q1, поэтому я хочу запросчтобы сказать, что дайте мне документы, где вопрос q1 имеет оба ответа a1 и a2
Я давно хотел исследовать подход опций id, это пример запроса, который я строю для него.
{
"_source": {"includes": ["answers.uKeCywV4SAgD8YGReSkn.text", "answers.uKeCywV4SAgD8YGReSkn.questionTypeCode"]},
"query": {
"bool": {
"filter": [{
"bool": {
"must": [{
"match": {
"answers.uKeCywV4SAgD8YGReSkn.options.id": "32700fb5-51d2-4617-b65f-831b83c88080"
}
},
{
"match": {
"answers.uKeCywV4SAgD8YGReSkn.options.id": "32700fb5-51d2-4617-b65f-831b83c87777"
}
}
]
}
}, {
"match": {
"formId": "hHhcLKh9st1vFr8nDY4a"
}
}, {
"range": {
"_updated_at": {
"from": "1970-01-01T00:00:00.000+0000",
"include_lower": true,
"include_upper": true,
"to": null
}
}
}]
}
}
}
Я хотел бы знать, есть ли какие-либо недостатки для использования этого подхода вместо поиска в поле text
с использованием boметки опций
В соответствии с отображением, так установлены оба поля
"questionId": {
"type": "keyword",
"index": false
},
"text": {
"type": "text"
},
"options": {
"enabled": false
},