导航:
一:子条件查询
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
其他: