如何在弹性搜索查询中添加mutliple字段的首选项?

时间:2017-11-06 07:18:11

标签: javascript node.js string elasticsearch mapping

我有以下数据:     makeStr:施乐     modelStr:Designjet 1050C

我希望它匹配     施乐
    Designjet 1050C Plus打印机

但它匹配     教规     DesignJet 1050C

目前我有这个查询

"query": {
      "bool": {
        "should": 
        {
          "multi_match": {
            "query": modelStr,
            "type": "most_fields",
            "fields": ['model.alphanum']
          }
        }
      ,
        "filter": [
          {
            "match": {
              "make.blur": makeStr
            }
          },
          {
            "match": {
              "model.blur": modelStr
            }
          }
        ]
      }
},
    "functions": [{
      "field_value_factor": {
        "field": "isMpsSupported",
        "factor": 1,
        "missing": 0
      }
    }],
    "boost_mode": "sum"
  }

如何优先考虑makeStr,以便在搜索过程中同时考虑makeStr和modelStr。

1 个答案:

答案 0 :(得分:0)

使用boost可以给予更多偏好。请参阅here

像makeStr ^ 2这样的东西应该可以工作。