elasticsearch 7.x 索引的基本操作——查询

es中的查询分为单条件查询多条件查询,下面详细说明一下

一、 单条件查询

1. 简单查询方法

简单查询方法执行的请求:

GET /索引/文档/_search?q=字段:xxx

例如我这里查询name字段为:“里”,可以看到他支持分词搜索,结果有两个。

这里关注一下“_score”,这个是分数,后面再复杂查询当中还会用到,可以用来排序,数字越大的代表权重越大,会展示在前面。

查询

2. 复杂查询方法

复杂查询方法执行的请求:

GET /索引/文档/_search
{
	"query": {
		"match": {
			"字段": "xxx"
		}
	}
}

查询结果与简单查询方法一致。但是这种方法还可以进行排序过滤结果分页等操作,下面演示一下:

在演示之前这里首先删除之前举例的test3索引,并重新向索引test3中添加两条记录:

PUT /test3/_doc/1
{
	"name": "里异火",
	"age": 10,
	"tags": ["最帅","花里胡哨","秀"]
}


PUT /test3/_doc/2
{
	"name": "里乱术",
	"age": 11,
	"tags": ["帅","颜值高","秀"]
}

2.1 排序

查询并排序请求:

GET /test3/_doc/_search
{
	"query": {
		"match": {
			"name": "里乱术"
		}
	},
	"sort": {
		"age": {
			"order": "asc"
		}
	}
}

在"sort"中指定了对"age"的升序排序,可以看到结果也是排序后的结果:
查询排序

2.2 过滤

过滤是指对字段的过滤,在这两条记录里,每一条记录都会有"name"、“age”、"tags"字段,假如我不想看"tags"呢?
查询并过滤请求:

GET /test3/_doc/_search
{
	"query": {
		"match": {
			"name": "里乱术"
		}
	},
	"_source": ["name","age"]
}

查询后的结果与"_source"中指定的字段是一致的:

查询并过滤

2.2 分页

分页操作大家一定不陌生了,在这里给出对应的请求:

GET /索引/文档/_search
{
	"query": {
		"match": {
			"name": "xxx"
		}
	},
	"from": 0,      //从第几个数据开始
	"size": 2		//返回多少条数据
}

二、 布尔值查询

这里的布尔值查询也叫做多条件查询,方便一次性查询多个条件,一说到多条件查询,肯定能想到与、或、非:

1. must命令

must命令也就相当于sql中的and,同时满足所有条件的记录会被筛选出:

GET /索引/文档/_search
{
	"query": {
		"bool": {
			"must": [		//这里在但条件查询中是match
			{
				"match": {			//其实只是同时写多个match
					"字段1": "xxx"
				}
			},
			{
				"match": {			
					"字段2": "xxx"
				}
			}
			]
		}
	}
}

这里举个例子,同时搜索name字段和age字段,同时满足两个条件的会被筛选出来:
must

2. should命令

should命令也就相当于sql中的or,满足其中一个条件的记录会被筛选出:

GET /索引/文档/_search
{
	"query": {
		"bool": {
			"should": [		//将must改成should
			{
				"match": {			//两个match满足一个就会被筛选出来
					"字段1": "xxx"
				}
			},
			{
				"match": {			
					"字段2": "xxx"
				}
			}
			]
		}
	}
}

3. not命令

not命令也就相当于sql中的!=,不满足条件的记录会被筛选出:

GET /索引/文档/_search
{
	"query": {
		"bool": {
			"must_not": [		//将must改成must_not
			{
				"match": {			
					"字段": "xxx"
				}
			}
			]
		}
	}
}

4. filter过滤器

filter过滤器相当于">"、"<"、">="、"<=",筛选出满足条件的记录:

GET /索引/文档/_search
{
	"query": {
		"bool": {
			"must": [
			{
				"match": {			
					"字段": "xxx"
				}
			}
			],
			"filter": {
				"range": {
					"字段": {
						"lt": 10			//小于号
					}
				}
			}
		}
	}
}

“lt"对应”<"
“gt"对应”>"
“lte"对应”<="
“gte"对应”>="

5. 多项匹配

GET /索引/文档/_search
{
	"query": {
		"match": {
			"字段": "xxx"		//查询多个条件可以用空格分开,例如"花里胡哨 帅"
		}
	}
}

多项

三、 高亮查询

高亮查询应该是最常见的搜索了:

GET /索引/文档/_search
{
	"query": {
		"match": {
			"字段": "xxx"
		}
	},
	"highlight": {
		"fields": {
			"字段": {}
		}
	}
}

高亮查询
可以看到例子中查询出来的关键字都被包含在标签中,当然还可以自定义标签样式

GET /索引/文档/_search
{
	"query": {
		"match": {
			"字段": "xxx"
		}
	},
	"highlight": {
		"pre_tags": "样式",
		"post_tags": "样式",
		"fields": {
			"字段": {}
		}
	}
}

自定义高亮
可以看到右边结果中包围关键字的是我们指定的样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值