У меня есть этот индекс blog
со следующими settings
и mappings
.Оценка функции на вложенном объекте
PUT /blog
{
"settings": {
"index": {
"number_of_shards": "1"
}
},
"mappings": {
"post": {
"_all": {
"enabled": false
},
"properties": {
"title": {
"type": "string"
},
"content": {
"type": "string"
},
"visitor": {
"type": "nested",
"properties": {
"id": {
"type": "string",
"index": "not_analyzed"
},
"last_visit": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}
}
}
}
Я хочу оценивать свои должности на основе релевантности и последнего посещения посетителя. Я пробовал этот запрос без успеха. Кажется, что функция gauss не может получить значение visitor
's last_visit
. Как это сделать?
POST /blog/post/_search
{
"query": {
"function_score": {
"functions": [
{
"gauss": {
"visitor.last_visit": {
"origin": "now/d",
"offset": "3d",
"scale": "4d",
"decay": 0.5
}
},
"filter": {
"nested": {
"path": "visitor",
"query": {
"term": {
"visitor.id": "1"
}
}
}
}
}
]
}
}
}
Вы получаете сообщение об ошибке при запуске этого запроса? или это просто не дает результатов, на которые вы надеялись? – chester89
@ chester89 У меня не было ошибок. Когда я прочитаю объяснение, он не использует 'last'visit'' visitor', он всегда использует '0.0'. Я подозрительно, что он не мог получить значение. – shankshera
Я предлагаю вам сначала попробовать ваш запрос в не-вложенном поле. если это работает, может быть проблема с вложенным полем – chester89