ES 中dsl结构化查询属性的一些体会

一、es的dsl结构化查询,可以分为query和filter,他们之间的区别是:

query会计算分数值来查询,而filter不计算分数值。专业点的说法就是,query查询到的文档,会检查与查询条件的匹配度如何,filter查询到的文档,只是检查是否与查询匹配。正常情况下,filter的性能是强于query的。

在es1.X的时候,query跟filter是分开的,即存在:query:{}    跟   filter:{},在2.x包括2.x之后,所有的查询子句都包含在query里面,包括filter,类似:

{
	"query": {
		"bool": {
			"should": [{
				"match": {
					"t_ds_events_repository|name": "订单"
				}
			}],
			"filter": [
				{
					"term": {	"t_ds_events_repository|status": 1}
				},
				{
					"term": {	"t_ds_events_repository|driver_type": 1}
				}
			],
			"must": [{
				"match": {
					"t_ds_events_repository|name": "订单"
				}
			}]
		}
	}
}

 

二、query节点下,可以加bool,加与不加的区别是:

加:bool节点下的条件必须全部满足,相当于sql中的and

不加:query下的查询条件只要有一个满足,就能查询出来,相当于sql中的or

 

三、term和match的区别

term:对查询条件不分词

match:对查询条件分词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值