弹性搜索 - 优先完美匹配

时间:2016-07-22 05:30:24

标签: search elasticsearch

我是弹性新手。

我使用弹性搜索来搜索存储在我的数据库中的文档的标题字段。更多信息:"title" field - type "String"/indexed and "title.unanalyzed" field - type "String"/unindexed

我希望标题与查询完全匹配的文档出现在搜索结果的顶部,而对于所有其他文档,我希望它们按照得分的降序排序。我想对具有完全匹配标题的文档给出1.1分将有助于分析字段的0到1之间的弹性分数。我目前的查询:

query: {
                    term: {
                            "title.unanalyzed": "some_title"
                    },

                    multi_match: {
                            query: "some_title",
                            type: "most_fields",
                            fields: ["title", "other"]
                    }
        }

发出错误:failed to parse search source. expected field name but got [START_OBJECT]。需要帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "title.unanalyzed": "some_title"
          }
        },
        {
          "multi_match": {
            "query": "some_title",
            "type": "most_fields",
            "fields": [
              "title",
              "other"
            ]
          }
        }
      ]
    }
  }
}