我正在做一个简单的查询,包含多个字段,并尝试根据给定文档的存在天数来应用衰减函数。以下查询是我的尝试:

    {
        query: {
            function_score:{
                query: {
                    multi_match: {
                        query: query,
                        fields: ['name', 'location']
                    },
                    functions: [{
                        gauss: {
                            created_at: {
                                origin: 'now',
                                scale: '1d',
                                offset: '2d',
                                decay: 0.5
                            }
                        }
                    }]
                }
            }
        }
    }

使用以下映射:
mappings dynamic: 'false' do
    indexes :name, analyzer: 'english'
    indexes :location, analyzer: 'english'
    indexes :created_at, type: 'date'
end

给出以下错误:

最佳答案

functions需要上一层,仅在function_score内部而不是query内部,如下所示:

{
    query: {
        function_score:{
            functions: [{
                gauss: {
                    created_at: {
                        origin: 'now',
                        scale: '1d',
                        offset: '2d',
                        decay: 0.5
                    }
                }
            }],
            query: {
                multi_match: {
                    query: query,
                    fields: ['name', 'location']
                }
            }
        }
    }
}

10-07 14:00