美文网首页ELK
ES match query match_phrase 区别

ES match query match_phrase 区别

作者: 良人与我 | 来源:发表于2019-07-14 16:56 被阅读64次

    通过profile 查看es 是如何对 match query 进行查询的

    POST movies/_search
    {
      "profile": true,
      "query": {
        "match": {
          "title": "one love"
    
        }
      }
    }
    

    结果如下(省略了部分不必要的信息)

    "profile" : {
        "shards" : [
          {
            "id" : "[Q491-N8XRdyUYsCZCLJFFQ][movies][0]",
            "searches" : [
              {
                "query" : [
                  {
                    "type" : "BooleanQuery",
                    "description" : "title:one title:love",
                    "time_in_nanos" : 1359749
                    "children" : [
                      {
                        "type" : "TermQuery",
                        "description" : "title:one",
                        "time_in_nanos" : 288077
                      },
                      {
                        "type" : "TermQuery",
                        "description" : "title:love",
                        "time_in_nanos" : 244287
                      }
                    ]
                  }
                ],
                "rewrite_time" : 5351,
              }
            ],
            "aggregations" : [ ]
          }
        ]
      }
    

    可以看到包含 3 个查询

    1. 查询 one love
    2. 查询 one
    3. 查询 love

    通过profile 查看es 是如何对 match_phrase query 进行查询的

    POST movies/_search
    {
       "profile": true,
      "query": {
        "match_phrase": {
          "title":{
            "query": "one love",
            "slop": 1
    
          }
        }
      }
    }
    

    默认 slop 是 0
    profile 的 search query 描述如下

    "type" : "PhraseQuery",
    "description" : """title:"one love"~1""",
    "time_in_nanos" : 380069,
    

    "one love"~1 意思是 one love 要一起出现,中间可以夹杂另外 一个 单词。

    相关文章

      网友评论

        本文标题:ES match query match_phrase 区别

        本文链接:https://www.haomeiwen.com/subject/ixcikctx.html