elasticsearch高级查询

导航:

一:子条件查询

     1.query context

           a.全文本查询

                 a_1:模糊匹配 match

                 a_2:match_phrase

                 a_3:多个字段关键匹配查询multi_match

                 a_4:语法查询:queryString

           b.字段级别查询

                 b_1:term

                 b_2:range

     2.filterContext

二:复合条件查询

     1.固定分数查询

     2.布尔查询

     3.其他

 

一:子条件查询:特定字段查询所指特定值

    1.query context

     在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_Score来标识匹配的程度,旨在判断目标文档和查询条  件匹配的有多好

常用查询

(a):全文本查询 : 针对文本类型数据

模糊匹配:

match_phrase:

{
	"query":{
		"match_phrase":{
			"title":"java入门"
		}
	}
	
}

 多个字段关键匹配查询multi_match

作者和标题都有瓦力的文档都查出来

{
	"query":{
		"multi_match":{
		  "query": "瓦力",
		  "fields": ["author","title"]
		}
	}
	
}

语法查询:queryString

查询所有字段有瓦力的文档

{
	"query":{
		"query_string":{
		  "query": "ElasticSearch OR Python"
		  
		}
	}
	
}

查询作者和标题有瓦力的文档

{
	"query":{
		"query_string":{
		  "query": "ElasticSearch OR Python",
		  "fields":["title","author"]
		  
		}
	}
	
}

字段查询:

 

(b): 字段级别查询: 针对结构化数据,如数字,日期等

查询字数为2000的文档

{
	"query":{
		"term":{
		  "world_count": 2000
		  
		}
	}
	
}

查询字数在1000到5000的文档(>=1000 and <5000)

{
	"query":{
		"range":{
		  "world_count": {
		  	"gte":1000,
		  	"lt":5000
		  }
		}
	}
	
}

 

2.filterContext

filterContext在查询过程中,只会判断该文档是否会满足条件,只有"yes"和"NO"

filter就是用来数据过滤的,并会对结果进行缓存,所以相对search会快一下

{
	"query":{
		"bool":{
		  "filter": {
		  	"term":{
		  		"world_count": 2000
		  	}
		  }
		}
	}
	
}

二:复合条件查询:以一定的逻辑组合子条件查询

固定分数查询:

{
	"query":{
		"constant_score":{
		  "filter":{
		  	"match":{
		  		"title":"ElasticSearch"
		  	}
		  },
		  "boost":2
		}
	}
	
}

布尔查询:

详情请看这里https://blog.csdn.net/liyu121/article/details/99399664

其他:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值