У меня есть запрос ES, который возвращает 414 документов, если я исключаю определенное поле из результатов.
Если я включу это поле, количество документов уменьшится до 328.
Документы, которые получаютпропущенные значения соответствуют друг другу, и это происходит независимо от того, прокручиваю ли я результаты или запрашиваю напрямую.
Карта полей для поля, которое уменьшает результирующий набор, выглядит следующим образом:
"completion": {
"type": "object",
"enabled": false
}
Ничего особенного, и у меня есть другие «включенные»: ложные поля типа объекта, которые возвращают просто отличнов этом запросе.
Я протестировал несколько индексов с одинаковыми данными, чтобы исключить повреждение (надеюсь).
Этот объект 'завершения' является вложенным и игнорируемым объектом, который имеет 4 или 5 уровней вложенности, но, опять же, у меня есть другие аналогично вложенные объекты, которые прекрасно возвращаются для этого запроса.
запрос представляет собой простое совпадение терминов для 414 терминов (да, это ужасно, мы переосмысливаем нашу стратегию по этому вопросу):
var { _scroll_id, hits } = await elastic.search({
index: index,
type: type,
body: shaQuery,
scroll: '10s',
_source_exclude: 'account,layout,surveydata,verificationdata,accounts,scores'
});
while (hits && hits.hits.length) {
// Append all new hits
allRecords.push(...hits.hits)
var { _scroll_id, hits } = await elastic.scroll({
scrollId: _scroll_id,
scroll: '10s'
})
}
Запрос:
"query": {
"terms": {
"_id": [
"....",
"....",
"...."
}
}
}
В этом примереЯ вернусь только 328 результатов.Если я добавлю «завершение» в _source_exclude, то получу полный набор обратно.
Итак, мой вопрос: каковы сценарии, в которых включение поля в результат может ограничить поиск, когда это поле совершенно не связанок поиску.
Символы # характерны для этого примера, но согласуются между запросами.Я просто включил их в контекст для общей проблемы.
Также важно, чтобы в этом поле завершения были одинаковые данные и формат как для включенных, так и исключенных записей, я не вижу ничего, что могло бы вызвать проблему.