【问题标题】:Add query time weight/boost based on field value根据字段值添加查询时间权重/提升
【发布时间】:2017-04-12 15:02:58
【问题描述】:

我目前使用的是 elasticsearch 2.4 版,并希望使用查询时间提升或加权根据我称为“类型”的字段微调我的结果集。

例如

如果字段“类型”的值为“船”,则添加权重或提升 4

如果字段“类型”的值为“大篷车”,则添加权重或提升 3

因此,使与查询字符串匹配的船只出现在搜索结果中的商队之前。

我发现到目前为止我阅读的文档在过滤器、函数和函数分数方面非常复杂。如果有人可以为我的场景提供一个示例来让我继续前进,我将不胜感激。

【问题讨论】:

  • 试试constant_score查询
  • 谢谢,很好的回答

标签: elasticsearch


【解决方案1】:

您应该使用constant_score 查询和boost 选项来确定优先级。

{
  "query": {
    "bool": {
        "should": [
            {
                "constant_score": {
                    "boost": 4,
                    "query": {
                        "match": {
                            "description": "Boats"
                        }
                    }
                }
            },
            {
                "constant_score": {
                    "boost": 3,
                    "query": {
                        "match": {
                            "description": "Caravans"
                        }
                    }
                }
            }
        ]
    }
  }
}

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2018-12-09
    • 1970-01-01
    • 2013-12-24
    • 2021-12-14
    • 2014-01-05
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多