ElasticSearch入门(四)ElasticSearch的DSL搜索、高亮与聚合

前言

     本章讲解ES的DSL搜索,以及它的高亮显示和聚合操作

方法

1.DSL(Domain Specific Language)搜索

在上一章节,我们学习了有关文档的查询操作,我们使用了类似——_search?q=属性:属性值。

如果我们的查询条件足够复杂的话,其将无法满足我们的要求,这个时候就需要用到DSL搜索了!

语法:POST /{索引}/{索引类型}/_search

参数:查询条件请求体

范例1:查询用户年龄为34的数据

查询条件请求体:

{
	"query": {
		"match": {
			"age": 34
		}
	}
}

范例2:查询用户年龄大于26岁且性别为男的数据

这里我们首先构造五条数据:

发送查询请求:

{
	"query": {
		"bool": {
			"filter": {
				"range": {
					"age": {
						"gt": 26
					}
				}
			},
			"must": {
				"match": {
					"sex": "男"
				}
			}
		}
	}
}

查询的结果如下所示:

很显然,这是满足我们的条件的两条数据!

范例3:查询名字为魏大勇和秀琴的相关信息

发送查询请求:

查询条件请求体:

{
	"query": {
		"match": {
			"name": "魏大勇 秀琴"
		}
	}
}

查询结果如下:

本次仅仅是入门基本的DSL查询,更多的查询后面会讲到!

2.ES的高亮显示

在ES中,如果需要高亮显示,仅仅在DSL查询加入如下属性即可!


范例1:查询用户名称为张三的数据,并高亮显示名字

查询条件请求体:

{
	"query": {
		"match": {
			"name": "张三"
		}
	},
	"highlight": {
		"fields": {
			"name": {}
		}
	}
}

查询结果如下:

3.ES的聚合操作

我们可以这样理解,ES的聚合操作实际上和关系数据库的分组操作类似。

我们构造如下数据:

范例:查询所有数据,按照年龄分组

查询条件请求体:

{
	"aggs": {
		"all_interests": {
			"terms": {
				"field": "age.keyword"
			}
		}
	}
}

查询结果如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值