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": {}
}
}
}