elasticsearch入门(三)高级查询(上)

系列:
ubuntu安装elasticsearch
基本用法
高级查询【上】
高级查询【下】
与springboot整合
整合mysql和thymeleaf

子条件查询(特定字段查询所指特定值):
Query_context:

在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来表示匹配的程度,意在判断目标文档和查询条件匹配有多好。
常用查询:
①全文本查询:针对文本类型数据
②字段级别查询:针对结构化数据,如数字、日期等

全文本查询

1、模糊查询:

{
	"query":{
		"match":{
			"name":"秦"  //只输入了文档中的一个字,然后可以模糊匹配到所有结果
		}
	}
}
"hits": {
        "total": 1,
        "max_score": 0.6099695,   //查询结果的匹配度
        "hits": [
            {
                "_index": "people",
                "_type": "man",
                "_id": "4",
                "_score": 0.6099695,
                "_source": {
                    "name": "秦旭洋",
                    "country": "印度",
                    "age": 21,
                    "birth": "1995-12-12"
                }
            }
        ]
    }

2、其余匹配
比如我的索引中有这些数据:
在这里插入图片描述
使用其余匹配搜索“熊义杰在哪“,只会显示“熊义杰在哪”一个结果

{
	"query":{
		"match_phrase":{  //这个是指其余匹配
			"name":"熊义杰"
		}
	}
}

在这里插入图片描述
3、多个字段匹配查询

{
	"query":{
		"multi_match":{
			"query":"熊义杰",
			"fields":["name","country"] //查询nam和country中有“熊义杰”的结果
		}
	}
}

在这里插入图片描述

字段级别查询

查询age为19的结果:

{
	"query":{
		"term":{  //指定具体的项目
			"age":19
		}
	}
}

范围查询(数字):

{
	"query":{
		"range":{
			"age":{
				"gte":19,  //大于等于19
				"lte":22 //小于等于22
			}
		}
	}
}

范围查询(时间):

{
	"query":{
		"range":{
			"birth":{
				"gte":"1999-12-08",  //大于等于这个日期
				"lte":"now" //小于等于现在的日期
			}
		}
	}
}
filter查询
{
	"query":{
		"bool":{
			"filter":{
				"term":{
					"age":19  //只过滤出age=19的数据,且filter可以缓存数据,较快
				}
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值