如何查询Elasticsearch中具有相同字段但不同提升的多个类型?

时间:2014-11-19 16:28:13

标签: jquery search elasticsearch

我有3种类型:[place, doctor, article]其中每种类型都有一个名为title的字段。 article类型有一个名为body的额外字段。我想匹配这3种类型标题字段的查询与不同的提升数字。例如:医生的头衔增加3,而地方的头衔增加2。

如何实现此查询?(我只想要请求体)

1 个答案:

答案 0 :(得分:1)

特定于用例的一种方法是使用function_score

您在标题上匹配并提供每种类型的提升。 示例查询将在以下行中进行:

{
    "query" : {
        "function_score" : {
            "query" : {
                "match" : {
                    "title" : "Lucky Jim"
                }
            },
            "functions" : [
                {
                    "filter": {
                        "type" : {
                            "value" : "doctor"
                        }
                    },
                    "boost_factor" :  3
                },
                {
                    "filter": {
                        "type" : {
                            "value" : "place"
                        }
                    },
                    "boost_factor" :  2
                }
            ],
            "score_mode": "first",
            "boost_mode": "multiply"
        }
    }
}

对于 elasticsearch 1.4 以及根据函数中的文档 boost_factor 的注意事项已弃用,应替换为的 重量