es修改排序_Elasticsearch:按日期排序字段(降序):gauss或field_value_factor?

我有一个关于根据创建日期修改得分文档的问题.我尝试过高斯函数和field_value_factor.

第一个是(所有查询条款):

@search_definition[:query] = {

function_score:{

query: {

bool: {

must: [

{

query_string: {

query: ,

fields: %w( field_1ˆ2

field_2ˆ3

...

field_n^2),

analyze_wildcard: true,

auto_generate_phrase_queries: false,

analyzer: 'brazilian',

default_operator: 'AND'

}

}

],

filter: {

bool: {

should: [

{ term: {"boolean_field": false}},

{ terms: {"array_field_1": options[:key].ids}},

{ term: {"array_field_2.id": options[:key].id}}

]

}

}

}

},

gauss:{

date_field: {

scale: "1d",

decay: "0.5"

}

}

}

}

通过这种配置,我告诉我们最后的文件必须具有更高的分数.当我用它执行查询时,结果完全相反!最早的文件首先被退回.即使我改变原点

origin: "2010-05-01 00:00:00"

这是第一个文件的日期,最早的文件也是首先被检索的.我究竟做错了什么?

使用field_value_factor,事情会更好,但还不是我在等什么……(所有的查询子句都是)

@search_definition[:query] = {

function_score:{

query: {

bool: {

must: [

{

query_string: {

query: ,

fields: %w( field_1ˆ2

field_2ˆ3

...

field_n^2),

analyze_wildcard: true,

auto_generate_phrase_queries: false,

analyzer: 'brazilian',

default_operator: 'AND'

}

}

],

filter: {

bool: {

should: [

{ term: {"boolean_field": false}},

{ terms: {"array_field_1": options[:key].ids}},

{ term: {"array_field_2.id": options[:key].id}}

]

}

}

}

},

field_value_factor: {

field: "date_field",

factor : 100,

modifier: "sqrt"

}

}

}

使用这个其他配置,2016年和2015年的文档将首先返回,但是从2016年开始,有大量文档的得分低于2015年的其他文档,即使我设置了一个修饰符“sqrt”,因子:100!

我认为guass功能将是合适的解决方案.如何反转这个高斯结果?或者我如何增加field_value_factor以便2016年到来之前?

非常感谢,

吉列尔梅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值