query DSL
query DSL基本语法
使用query定义查询条件
可以添加其他的查询条件以过滤 如sort 排序 from + size分页
查询match_all表示查询索引记录 sort表示排序 balance表示排序字段 根据balance进行升序排序
GET bank/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"balance": {
"order": "asc"
}
}
]
}
match 匹配搜索
按输入的字段的值进行匹配 然后按相关性就像排序
根据address为mill的值进行匹配 只要保护mill的值都进行查询匹配
GET bank/_search
{
"query": {
"match": {
"address": "mill"
}
}
}
score表示相关性
match_phrase 短语匹配
百分百匹配 将整个字段看成一个词进行匹配查询 直接进行查询 将匹配结果返回 符合整条短语的进行返回
GET bank/_search
{
"query": {
"match_phrase": {
"firstname": "Forbes"
}
}
}
keyword 精确匹配
只有100%完美一致的值才能进行匹配
GET bank/_search
{
"query": {
"match": {
"address.keyword": "132 Gunnison Court"
}
}
}
multi_match 多字段匹配
只要匹配字段中其中一个字段包含 query 中的值 则进行匹配返回
fields表示匹配字段列表
GET bank/_search
{
"query": {
"multi_match": {
"query": "M",
"fields": ["gender", "employer"]
}
}
}
bool 查询
可以有四个参数
must为必须匹配 must_not为必须不匹配 should表示可以匹配也可以不匹配 如果匹配到了 相关性会提高 filter 若只添加fileter字段 将不进行相关性统计 若与must must_not should进行使用则进行结果再过滤
如果过滤后使用filter 表示将结果进行再次过滤 查询age > 10 且 age < 38 的结果 且address中不包含Street的结果
然后 firstname 可以是Amber 的结果 再进行filter过滤 account_number > 5 且小于10
GET bank/_search
{
"query": {
"bool": {
"must": [
{"range": {
"age": {
"gte": 10,
"lte": 38
}
}}
],
"must_not": [
{"match": {
"address": "Street"
}}
],
"should": [
{"match": {
"firstname": "Amber"
}}
],
"filter": [
{"range": {
"account_number": {
"gte": 5,
"lte": 10
}
}}
]
}
}
}
执行结果
如果直接使用filter 执行结果不会对相关性进行统计
GET bank/_search
{
"query": {
"bool": {
"filter": [
{"range": {
"age": {
"gte": 10,
"lte": 20
}
}}
]
}
}
}
执行结果
term 精确匹配
字符串使用match匹配
数字 浮点等使用term匹配
GET bank/_search
{
"query": {
"term": {
"age": 20
}
}
}
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律