termquery与matchquery的区别

PUT test/_doc/1
{
  "content":"Hello World"
}
GET test/_mapping

{
  "test" : {
    "mappings" : {
      "properties" : {
        "content" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}
GET test/_analyze
{ 
  "explain": true, 
  "analyzer": "standard",
  "text": "Hello World"
}

POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content": "Hello World" 
    }
  }
}

POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content": "hello world"
    }
  }
}
#查的到数据,因为content.keyword在存数据的时候不分词,不做任何处理.存的就是Hello World
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content.keyword": "Hello World"
    }
  }
}
#查不到数据,因为content.keyword在存数据的时候不分词,不做任何处理.存的就是Hello World,而你用小写的hello world去查询,所以查不到数据
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content.keyword": "hello world"
    }
  }
}
#查不到,termquery :content:Hello World,你存的数据content是hello
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content": "Hello World"
    }
  }
}
#termquery.查不到content作为整体去查
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content": "hello world"
    }
  }
}
#查的到,content存的数据是Hello World,所以查得到
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content.keyword": "Hello World"
    }
  }
}

 

posted @ 2020-12-24 09:03  小啊菜鸡  阅读(955)  评论(0编辑  收藏  举报