Как повысить значение ближайшего поля созданного в Elasticsearch?
Я хочу отсортировать результаты своего запроса, следуя некоторым правилам повышения, и в то же время я хочу, чтобы они были отсортированы по дате создания, насколько это возможно, если я добавлю сортировку create_at, это все изменит, и мои результаты больше не будут актуальны. Так что я думаю, что единственный способ сделать это - увеличить поле create_at (самый новый имеет самый большой бонус в расчете очков за это повышение), но я не знаю, как его реализовать. Это мой запрос:
query = {
"query" : {
"bool" : {
"must" : [
{
"range" : {
"deadline" : {
"gte" : "2016-05-30T11:39:10+02:00"
}
}
},
{
"terms" : {
"state" : [
"open"
]
}
},
{
"query_string" : {
"query" : "chant",
"default_operator" : "AND",
"analyzer" : "search_francais",
"fields" : [
"title^6",
"description",
"brand",
"category_name"
]
}
}
]
}
},
"filter" : {
"and" : [
{
"geo_distance" : {
"distance" : "40km",
"location" : {
"lat" : 48.855736,
"lon" : 2.32927300000006
}
}
}
]
},
"sort" : [
{
"_score" : "desc"
},
#{
# "created_at" : "desc" ==> i tried this but it doesnt change results
#}
]
}
1 ответ
Попробуйте добавить ваше условие в блок должен.
i) Если созданная дата должна быть ближе к значению, указанному в поисковом запросе, или у вас есть представление о том, насколько близкой должна быть дата, введите запрос диапазона. ii) Если вы не уверены во всех этих значениях, можно использовать функцию затухания. В этом случае запрос должен быть изменен на запрос функции.
{
"query" : {
"bool" : {
"must" : [
{
"range" : {
"deadline" : {
"gte" : "2016-05-30T11:39:10+02:00"
}
}
},
{
"terms" : {
"state" : [
"open"
]
}
},
{
"query_string" : {
"query" : "chant",
"default_operator" : "AND",
"analyzer" : "search_francais",
"fields" : [
"title^6",
"description",
"brand",
"category_name"
]
}
}
],
"should": [
{"created_at" : "condition here .. "}
]
}
},
"filter" : {
"and" : [
{
"geo_distance" : {
"distance" : "40km",
"location" : {
"lat" : 48.855736,
"lon" : 2.32927300000006
}
}
}
]
}
}