Для документов, какПри использовании гаусс оценки распада Funtion, он всегда забивает 1 по вложенным элементам
{
"_id" : "abc123",
"_score" : 3.7613528,
"_source" : {
"id" : "abc123",
"pricePeriods" : [{
"periodTo" : "2016-01-02",
"eur" : 1036,
"gbp" : 782,
"dkk" : 6880,
"sek" : 9025,
"periodFrom" : "2015-12-26",
"nok" : 8065
}, {
"periodTo" : "2016-06-18",
"eur" : 671,
"gbp" : 457,
"dkk" : 4625,
"sek" : 5725,
"periodFrom" : "2016-01-02",
"nok" : 5430
} ]
}
}
Я хотел бы иметь счет функции Гаусс распада на ценах.
Я попытался, как этот
"query" : {
"function_score" : {
"functions" : [{
"gauss" : {
"pricePeriods.dkk" : {
"origin" : "2500",
"scale" : "2500",
"decay" : 0.8
}
},
"filter" : {
"nested" : {
"filter" : {
"range" : {
"pricePeriods.periodTo" : {
"gte" : "2016-03-17T00:00:00.000"
}
}
},
"path" : "pricePeriods"
}
}
}
]
и, кажется, что фильтр находит цены, которые я хочу сделать гаусс, но полученный балл всегда равен 1.
Объяснить говорит
{ "value": 1,
"description": "min of:",
"details": [
{
"value": 1,
"description": "function score, score mode [multiply]",
"details": [
{
"value": 1,
"description": "function score, product of:",
"details": [
{
"value": 1,
"description": "match filter: ToParentBlockJoinQuery (+ConstantScore(pricePeriods.periodTo:[[32 30 31 36 2d 30 33 2d 31 37 54 30 30 3a 30 30 3a 30 30 2e 30 30 30] TO *]) #QueryWrapperFilter(_type:__pricePeriods))",
"details": []
},
{
"value": 1,
"description": "Function for field pricePeriods.dkk:",
"details": [
{
"value": 1,
"description": "exp(-0.5*pow(MIN[0.0],2.0)/1.4004437867889222E7)",
"details": []
}
]
}
]
}
]
}
Я вижу here, что gauss явно возвращает 1, когда он не может найти поле. Но вопрос в том, почему он не может найти поле в вложенных документах и как это сделать.
Спасибо, но есть еще две проблемы с ним. 1: Он все равно возвращает результат 1 для всех результатов, независимо от того, имеют ли они цены или нет. [ссылка] (http://screencast.com/t/nDE7g6tLYV) 2: Я не могу добавить другие функции для родителя. Полный запрос является довольно сложным с множеством различных полей. Но я не могу понять, как добавить как вложенные, так и верхние уровни функций. – ClausP
Я создал один тестовый индекс, и он работал, он дал оценку 1 только тем документам, которые не соответствовали условию. Какую версию ES вы используете? – ChintanShah25
Спасибо. Кажется, сейчас работает. Я забыл добавить вес к функции, поэтому все документы, соответствующие фильтру gauss, были отсортированы ниже 1. Добавив свет, кажется, что он теперь намного лучше. Я использую версию 2.1.1 и 1.7 – ClausP