ES之推荐搜索实现

in ELK with 0 comment

推荐搜索

所谓的推荐搜索就是当我们根据条件搜索的时候,因为单词的拼写错误,但是无法搜索出结果,那么ElasticSearch会给出一定的搜索建议,通过sugguest来实现。

GET movies/_search
{
    "query": {
        "bool": {
          "should": [
            {
              "match": {
                "title":"beautiful Minx" # 搜索内容
              }
            },
            {
              "match": {
                "genre":"drama"
              }
            }
          ]
        }
      },
    "suggest": {
        "title-suggest": { # 搜索的建议名,随意命名即可
            "text": "beautifu Minx",# 搜索内容
            "term": {
                "field": "title",
                "suggest_mode": "missing" # 建议模式有三种,missing、popular、always
        }
    },
        "genre-suggest": {
        "text": "drama",
            "term": {
            "field": "genre",
            "suggest_mode": "missing"
            }
        }
    }
}

针对给定的搜索内容要和建议命名内的搜索内容保存一致,如果无法搜索出结果,则给出推荐搜索的单词或者语句。

suggest

suggest_mode 的三种模式:

  • missing:当词典中没有找到对应的索引信息,才去推荐。
  • popular:即使我们去搜索一个被索引了的单词,但是还是会去给我们推荐类似的但是出现频率很高的词。
  • always:无论在任何情况下,都给出推荐。
Responses