Предположим, что у меня есть родительские документы с именем «комната» и некоторые дочерние документы с именем «человек» с полем «возраст». Теперь я хочу забить несколько комнат, используя поле возраста, используя запрос custom_score в ES.ElasticSearch подсчитывает родительские документы дочерним полем со значениями по умолчанию
Я уже делаю запрос почти как ожидалось, единственная проблема: пустые комнаты (без детских документов) не забиты. Как я могу дать им оценку по умолчанию или что-то в этом роде. В этом примере я хочу забить пять комнат с room_id 1 ~ 5. Если номер 4 не имеет дочерних документов, он не будет забит. Запрос достигнет 4 записей с ожидаемыми результатами. Я хочу, чтобы пустая комната была по умолчанию. Возможно, для этого случая подходит запрос оценки функции, но я использую NEST в качестве клиента .NET, который в настоящее время не поддерживает запрос оценки функции.
BTW: CSS SO здесь не работает, я не знаю почему. Если этот пост не хорошо отформатирован, пожалуйста, помогите отредактировать, спасибо.
{
"query": {
"custom_score": {
"script": "_score",
"query": {
"filtered": {
"query": {
"has_child": {
"type": "person",
"score_type": "sum",
"query": {
"custom_score": {
"script": "doc['person.age'].value - 50d",
"query": {
"match_all": {}
}
}
}
}
},
"filter": {
"bool": {
"should": [
{
"terms": {
"room_id": [ "1", "2", "3", "4", "5" ]
}
}
]
}
}
}
}
}
}
}