如何查询Elasticsearch以按特定字段提升

时间:2014-02-21 22:34:05

标签: python elasticsearch

如何索引和查询包含自定义权重的文档,以便您可以使用该权重来提升特定查询结果?

我使用{"text":"how now brown cow", "weight":2.3}这样的机构索引了简单文档。

使用Python包装器,我可以通过执行以下操作轻松搜索:

es = Elasticsearch()
results = es.search(
    index='my_index',
    body={
        'query':{
            'query_string':{
                'query':my_search_terms,
            },
        },
    },
)

但是,在阅读docs之后,我无法弄清楚如何合并权重字段,以便通过此值提高结果。我该怎么做?

1 个答案:

答案 0 :(得分:1)

我相信你可以用function_score query

来做到这一点

类似的东西:

{
"query": {
    "function_score": {
        "query": {  
            "match": {
                "text": "how now brown cow"
            }
        },
        "functions": [{
            "script_score": { 
                "script": "doc['weight'].value"
            }
        }],
        "score_mode": "multiply"
    }
}
}