首页 > 解决方案 > 在 Elasticsearch 中推广结果

问题描述

如果特定字段具有特定值,我在文档中搜索了一种提升 ElasticSearch 结果的方法,但我没有找到任何好的做法,例如,如果用户搜索查询我有一个住在巴黎的用户希望与巴黎相关的文件首先出现或只是被提升。

标签: elasticsearch

解决方案


这有很多,但你想研究“提升”。这可以在 映射级别查询级别完成。

映射示例:

{
  "mappings": {
    "_doc": {
      "properties": {
        "location": {
          "type": "keyword",
          "boost": 2 <--- 2x boost to the final score
        }
      }
    }
  }
}

查询示例:

GET /_search
{
    "query": {
        "bool": {
            "must": {
                "match": {  
                    "content": {
                        "query":    "full text search",
                        "operator": "and"
                    }
                }
            },
            "should": [
                { "term": {
                    "location": {
                        "value": "xxx",
                        "boost": 3 <--- 3x boost if the location matches
                    }
                }}
            ]
        }
    }
}

推荐阅读