一般来说,我们进行搜索不是直接写条件搜索,而是需要构建一个JSON格式的请求体,这样可以设置更好的传递参数
结果筛选
j s o n 结 构 \color{#0000FF}{json结构} json结构
# 查询结果筛选
GET /ceshi01/type01/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"_source":["name"]
}
GET /ceshi01/type01/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"_source":["name","age"]
}
运 行 结 果 \color{#FF00FF}{运行结果} 运行结果
查询排序
j s o n 结 构 \color{#0000FF}{json结构} json结构
GET /ceshi02/_doc/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
运
行
结
果
\color{#FF00FF}{运行结果}
运行结果
分页查询
j s o n 结 构 \color{#0000FF}{json结构} json结构
# 分页查询
GET /ceshi01/type01/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"from": 0,
"size": 1
}
GET /ceshi01/type01/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"from": 0,
"size": 2
}
运 行 结 果 \color{#FF00FF}{运行结果} 运行结果
过滤查询
j s o n 结 构 \color{#0000FF}{json结构} json结构
GET /ceshi02/_doc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "莫迪"
}
}
],
"filter": {
"range": {
"age": {
"lt": 20
}
}
}
}
}
}
参 数 解 析 \color{#00FFFF}{参数解析} 参数解析
gt | gte | lt | lte |
---|---|---|---|
大于 | 大于等于 | 小于 | 小于等于 |
运
行
结
果
\color{#FF00FF}{运行结果}
运行结果
布尔值查询
j s o n 结 构 \color{#0000FF}{json结构} json结构
GET ceshi01/type01/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "莫迪"
}
},
{
"match": {
"name": "瑞克"
}
}
]
}
}
}
参 数 解 析 \color{#00FFFF}{参数解析} 参数解析
must | must not | should |
---|---|---|
设置的所有match都要匹配才会返回结果 | 返回和结果相反的结果 | 满足条件之一就可以返回结果 |
运 行 结 果 \color{#FF00FF}{运行结果} 运行结果
精确查询
j s o n 结 构 \color{#0000FF}{json结构} json结构
# 精确查询
GET ceshi01/type01/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"name.keyword": "莫迪"
}
}
]
}
}
}
参 数 解 析 \color{#00FFFF}{参数解析} 参数解析
term
查询是使用倒排索引进行精确查询
term与match的比较
- term使用倒排索引直接进行精确查询
- match则会使用分词器进行解析后再查询,说白了就是先分析文档然后通过分析结果进行查询
“text”VS“keyword”
text | keyword |
---|---|
text会使用分词器进行分词后再查询 | keyword不会使用分词器进行分词,直接查询 |
运 行 结 果 \color{#FF00FF}{运行结果} 运行结果
高亮查询
j s o n 结 构 \color{#0000FF}{json结构} json结构
# 高亮查询
GET /ceshi01/type01/_search
{
"query": {
"match": {
"name": "莫迪"
}
},
"highlight": {
"pre_tags": "<p class=key style='color:black'>",
"post_tags": "</p>",
"fields": {
"name":{
}
}
}
}
运
行
结
果
\color{#FF00FF}{运行结果}
运行结果