ElasticSearch - 使用函数得分查询字段值因子与匹配查询

标签 elasticsearch

我想使用官方文档上的示例,结合普通匹配和 bool 查询。如何做到这一点?

GET /_search
{
    "query": {
        "function_score": {
            "field_value_factor": {
                "field": "likes",
                "factor": 1.2,
                "modifier": "sqrt",
                "missing": 1
            }
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor

匹配查询:

    "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/

相关文章:

php - “id不能为null。”尝试从ElasticSearch删除时出错

elasticsearch - 如何用Spring Boot设置ElasticSearch的数据目录

elasticsearch - 进行聚合查询时Elasticsearch返回文档ID

elasticsearch - 在kibana中查询前n个值

ubuntu - 如何修改 Elasticsearch 堆大小? - 未使用 jvm.options

elasticsearch - Count和Stats API在Elasticsearch中显示不同的文档计数?

elasticsearch - Elasticsearch 因内存不足而停止

Elasticsearch:桶排序聚合+字母字段排序

lucene - 使用Lucene,如果有人搜索 “red barn”,您还如何返回包含 “redbarn”的结果?

php - 将mysql数据库拉入elasticsearch