弹性搜索查询结果排序

时间:2021-04-28 19:37:50

标签: elasticsearch

我有以下查询,结果是正确的数据。但是想要完成排序,意味着先精确匹配然后休息。

enumerate()

我想要完全匹配,然后其他人喜欢 - 汉瑞·奥利弗 M 汉瑞·奥利弗, 汉瑞·陈·奥利弗

1 个答案:

答案 0 :(得分:0)

通配符查询上下文中的术语“完全匹配”是模棱两可的,如果不是毫无意义的话。但是,如果我理解正确,您可以boost“完全匹配”through a phrase_prefix 并通过adjusting 将查询字符串(Han).* (Ol).*

{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "query": "(Han).* (Ol).*",
            "fields": [
              "firstName",
              "lastName",
              "customerNo"
            ],
            "default_operator": "and",
            "type": "phrase_prefix",
            "analyze_wildcard": true,
            "boost": 10
          }
        },
        {
          "query_string": {
            "query": "Han* Ol*",
            "fields": [
              "firstName",
              "lastName",
              "customerNo"
            ],
            "default_operator": "and",
            "analyze_wildcard": true
          }
        }
      ]
    }
  }
}
相关问题