Elasticsearch日期衰减函数,Rails

时间:2016-06-18 18:15:11

标签: ruby-on-rails elasticsearch

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

    {
        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

给出以下错误:

  

[400]   {"错误" {" ROOT_CAUSE":[{"类型":" query_parsing_exception""理由":& #34:否   查询注册   〔高斯〕""指数":"人""线":1," COL" 143}], "类型":" search_phase_execution_exception""理由":"所有   碎片   失败""相":" query_fetch""分组":真," failed_shards":[{"碎片& #34;:0,"指数":"工作""节点":" abcdefgZq1PMsd882foA""理由" :{"类型":" query_parsing_exception""理由":"否   查询注册   〔高斯〕""指数":"人""线":1," COL" 143}}] },"状态" 400}

1 个答案:

答案 0 :(得分:1)

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']
                }
            }
        }
    }
}