首页 > 解决方案 > 在 Elasticsearch 中搜索时考虑多个字段

问题描述

我想使用 Elasticsearch 实现一个简单的搜索查询。

我有两个字段,"title""description"想将搜索词与之匹配。目前,我将下面显示的正文作为搜索正文的正文。我怎样才能使搜索优先title匹配匹配,但如果 中有匹配项description,它们仍然包含在搜索中(优先级较低)?提前致谢。

body = {
   size: 200,
   from: 0,
   query: {
      prefix: {
        title: searchTerm
      }
   }
}

标签: node.jselasticsearch

解决方案


您可以将bool/should子句与boost参数结合使用

{
  "query": {
    "bool": {
      "should": [
        {
          "prefix": {
            "title": {
              "value": "searchterm"
            }
          }
        },
        {
          "prefix": {
            "description": {
              "value": "searchterm",
              "boost": 4
            }
          }
        }
      ]
    }
  }
}

推荐阅读