首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch boost

Elasticsearch boost
EN

Stack Overflow用户
提问于 2017-03-12 17:38:45
回答 2查看 63关注 0票数 0

我有一个名为find的索引和一个名为song的类型。歌曲类型结构:

代码语言:javascript
复制
    "_index": "find",
    "_type": "song",
    "_id": "192108",
    "_source": {
      "id": 192108,          
      "artist": "Melanie",
      "title": "Dark Night",
      "lyrics": "Hot air hangs like a dead man\nFrom a white oak tree",
      "downloadCount": 234
    }

因为多首歌曲可能有相同的字段值,所以我需要通过downloadCount这样的流行度字段来提高结果。

如何将以下查询更改为按downloadCount优化?

代码语言:javascript
复制
GET /search/song/_search
{
  "query": {
      "multi_match": {
          "query": "like a dead hangs",
          "type": "most_fields",
          "fields": ["artist","title","lyrics"],
          "operator": "or"
        }
     }
}
EN

回答 2

Stack Overflow用户

发布于 2017-03-12 18:49:47

你可以使用elastic_search的field_value_factor功能,通过downloadCount来提升结果

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

票数 0
EN

Stack Overflow用户

发布于 2017-03-13 13:29:21

您可以使用function score查询。功能评分查询通过script_score函数提供了根据单据字段对单据进行评分的接口。

代码语言:javascript
复制
{
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": [{
                        "term": {
                            "you_filter_field": {
                                "value": "VALUE"
                            }
                        }
                    }]
                }
            },
            "functions": [{
                "script_score": {
                    "script": "doc['downloadCount'].value"
                }
            }]
        }
    }
}

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42745848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档