我想使用官方文档上的示例,结合普通匹配和 bool 查询。如何做到这一点?
GET /_search
{
"query": {
"function_score": {
"field_value_factor": {
"field": "likes",
"factor": 1.2,
"modifier": "sqrt",
"missing": 1
}
}
}
}
匹配查询:
"query": {
"match" : {
"name" : "star wars"
}
}
bool 查询:
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "Star Wars"
}
}
],
"should": [
{
"term": {
"name.keyword": {
"value": "Star Wars"
}
}
}
]
}
}
}
最佳答案
是的,这应该是可行的。如果您进一步阅读documentation that you linked to ,有一个例子:
GET /_search { "query": { "function_score": { "functions": [ { "gauss": { "price": { "origin": "0", "scale": "20" } } }, { "gauss": { "location": { "origin": "11, 12", "scale": "2km" } } } ], "query": { "match": { "properties": "balcony" } }, "score_mode": "multiply" } } }
根据您的用例稍微修改一下应该如下所示:
GET /_search
{
"query": {
"function_score": {
"functions": [
{
"field_value_factor": {
"field": "likes",
"factor": 1.2,
"modifier": "sqrt",
"missing": 1
}
}
],
"query": {
"match": {
"name": "Star Wars"
}
},
"score_mode": "multiply"
}
}
}
免责声明:我还没有对此进行测试,只是引用了文档。
关于ElasticSearch - 使用函数得分查询字段值因子与匹配查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52776547/