Я пытаюсь сделать, казалось бы, простой упругий запрос, но мне не удается, и я не могу ничего найти по этому вопросу.
У меня есть следующая модель (назовем это response)
{
string id,
int category,
answers: [{
string answer,
string innerId
int type,
}]
}
некоторые ответы могут не иметь фактического ответа (т. Е. Поле ответа является пустой строкой).
У меня есть 2 сценария, с которыми у меня проблемы.
Мой первый случай, который я не могу решить, таков, что я должен найти все вложенные объекты, которые имеют type = 1
и что-то есть в поле ответа.Я предложил этот запрос с этой опцией, которая дает мне все ответы, в которых есть хотя бы один ответ типа 1, включая ответы с пустой строкой ответа, которую я хочу исключить.
{
"query": {
"nested": {
"path": "surveyResponseAnswers",
"query": {
"bool": {
"must": [
{
"match": {
"surveyResponseAnswers.questionType": 1
}
}
]
}
}
}
}
}
Я пытался добавить
"must_not": [{
"match": {
"surveyResponseAnswers.answer": ""
}
]
На том же уровне, что и must
, но мне кажется, что это дает мне родительский ответ, потому что есть другие ответы, которыеиметь значение в свойстве answer, о котором мне все равно.
Мой второй случай таков, что я должен найти все вложенные объекты, которые имеют type = 1
, а поле ответа содержит другую строку / подстроку, для которойя предложил следующий запрос, но он дает мне результаты только для ответов, которые соответствуют полному поисковому слову, которое у меня есть.
{
"query": {
"nested": {
"path": "answers",
"query": {
"bool": {
"must": [{
"match": {
"answers.type": 1
}
}, {
"match": {
"answers.answer": "text"
}
}]
}
}
}
}
}