ElasticSearch Query查询

1.term查询和terms查询

  • term 和 terms 是 包含(contains) 操作,而非等值(equals)

  • 不知道分词器的存在,所以不会去分词

  • 所谓的包含是文档分词结果某个分词是否相等,即文档是否包含这个分词

  • 因为是在分词结果中匹配,所以大写要转换为小写,大写字母是匹配不到

GET /star-articles/_search
{  "query":{"term":{ "content":"今天"}}
}

GET /star-articles/_search
{  "query":{"terms":{ "id":[6402,6403]}}
}

2.控制查询返回的数量

GET /star-articles/_search
{  
  "from":0,
  "size":2,
  "query":{"term":{ "content":"今天"}}
}

3.match查询

match query知道分词器的存在,会对filed进行分词操作,然后再查询
match_all:查询所有文档
multi_match:可以指定多个字段
match_phrase:短语匹配查询,ElasticSearch引擎首先分析(analyze)查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变

GET /star-articles/_search
{  
  "query":{"match":{ "content":"今天吃火锅"}}
}

GET /star-articles/_search
{  
  "query":{"match_all":{ }}
}

GET /star-articles/_search
{  
  "query":{"match_phrase":{ "content":"今天吃火锅"}}
}


4.指定返回的字段

GET /star-articles/_search
{  
    "_source":["id","content"],
  "query":{"match":{ "content":"今天吃火锅"}}
}

5.排序

前缀匹配查询"match_phrase_prefix", 并使用sort实现排序:desc:降序,asc升序

GET /star-articles/_search
{
    "query": {
        "match_phrase_prefix": {
          "content": "今天"
        }
    },
    
    "sort":[
      {
        "publishedAt":{"order": "desc"}
      }
      ]
}

6.范围查询

range:实现范围查询

GET /star-articles/_search
{
    "query": {
        "range": {
            "publishedAt": {
                "from": "2021-01-13",
                "to": "2021-01-14",
                 "include_lower": true,
                "include_upper": false
            }
        }
    }
}

7.高亮搜索结果

GET /star-articles/_search
{
    "query":{
        "match":{
            "content": "今天"
        }
    },
    "highlight": {
        "fields": {
             "content": {}
        }
    }
}

你可能感兴趣的:(ElasticSearch Query查询)