es 之term和match區別


區別

  - match是經過analyer的,也就是說,文檔首先被分析器處理了。根據不同的分析器,分析的結果稍有不同。然后再根據分詞結果進行匹配

  - term則不經過分詞,它是直接去倒排索引中查找精確的值。

PUT w4
{
  "mappings": {
    "properties": {
      "t1": {
        "type": "keyword"
      },
      "t2": {
        "type": "text"
      }
    }
  }
}


PUT w4/_doc/1
{
  "t1": "hi xi fan",
  "t2": "hi xi fan"
}

GET w4/_search
{
  "query": {
    "match": {
      "t2": "hi"
    }
  }
}

GET w4/_search
{
  "query": {
    "term": {
      "t2": "hi xi fan"         # 這個是查不到結果的因為t2本來就是text類型(默認分詞的)而term查詢的時候不會以詞之后的結果的匹配,是以精確完整的內容去匹配,所以是匹配不到的
    }
  }
}

GET _analyze
{
  "analyzer": "standard",
  "text": "hi xi fan"
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM