系列:
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可以缓存数据,较快
}
}
}
}
}